2016-07-28 33 views
2

Ich frage mich, ob der Akteursstatus in Service Farbic mit einer Art inkrementellen Delta/Diff-Mechanismus repliziert wird oder ob der vollständige Status für jede Änderung repliziert wird.Inkrementelle Schauspielerstatusreplikation?

Nehmen wir an, wir haben einen Akteur mit einer ziemlich großen Zustandsnutzlast, sagen wir 100KB. Lassen Sie uns auch sagen, dass ein Zählerwert in diesem Zustand eingebettet ist. Der Zähler wird auf einer hohen Frequenz geändert, während der Rest des Zustands auf einer sehr niedrigen Frequenz geändert wird.

In diesem Fall wäre es verschwenderisch, wenn der vollständige Status für jede Änderung repliziert wird, und wir sollten wahrscheinlich ein anderes Design in Erwägung ziehen.

Wenn jedoch Service Farbric inkrementelle Replikation durchführen kann, könnte dieser Ansatz attraktiv sein.

Kennt jemand die Details dazu?

Möglicherweise verwendet Service Fabric während der Replikation einen binären Delta/Diff-Algorithmus im serialisierten Status, oder die Statusänderungen sind inkrementell pro Statusname?

Antwort

2

Es ist pro Bundesstaat Name. Wenn Sie sich die Methode IActorStateProvider.SaveStateAsync ansehen, sehen Sie, dass sie eine Liste von ActorStateChange akzeptiert. Der persistente Anbieter (KvsActorStateProvider) serialisiert jeden der Werte in dieser Liste (mit Ausnahme von remove) und aktualisiert den Speicher.

+0

Genau die Art von Antwort, die ich suchte. Vielen Dank! –