Akka: Korrektes Muster für die Synchronisierung zwischen zwei Akteuren

8

Beim Umschreiben der veralteten persistentView in Akka habe ich einen Lese-Aktor, der seinen Zustand erfassen muss, und der Journal-Ereignis-Offset wurde bisher gelesen. Um den Ansichtsakteur zu stoppen, der eine Serialisierung der zusammengesetzten Datenstruktur von: (Zustand + Offset) benötigt, delegiere ich die Verantwortung, den Versatzwert an einen untergeordneten Akteur aufzunaptieren. Das Problem besteht dann darin, den Offset-Wert zwischen diesen beiden zu synchronisieren. Momentan habe ich im Leseschauspieler:

%Vor%

und um den Offset-Wert des Child-Actors zu aktualisieren, um die Snapshots zu synchronisieren, mache ich:

%Vor%

Dies bedeutet jedoch, dass, wenn die Bestätigung des Kindschauspielers verloren gegangen wäre oder der Kindschauspieler gestorben wäre, bevor die Nachricht gesendet wurde, und dann der Darsteller stirbt, während er auf die offsetUpdated Antwort von dem Kindschauspieler, dem Offset und dem Der Status befindet sich in einem unsynchronisierten Zustand, wenn der Hauptdarsteller versucht, eine Wiederherstellung durchzuführen.

  • Lässt sich dieser Fall überhaupt belästigen? Würde ein lokaler Kindschauspieler nach dem Zufallsprinzip sterben, wenn er einfach nur arithmetisch vorgeht, wie es bei meinem Kinderschauspieler der Fall ist?
  • Wie kann ich das Design ändern, um sicherzustellen, dass es gehandhabt werden kann? Ich könnte möglicherweise eine Anerkennung auf beiden Seiten einführen und einen zweistufigen Synchronisierungsmechanismus auf beiden Seiten einführen, aber das ist wahrscheinlich fehlerhaft.

Hier ist der vollständige Kontext der Frage.

Aktualisieren : Lesen Sie mehr über Zuverlässigkeit der Nachrichtenübermittlung , mir ist klar, dass dies ein allgemeineres Problem ist. Kann ich dieses übergeordnete Element und dieses Actor so konfigurieren, dass es einen Bereitstellungsmechanismus at-least-once verwendet, während der Rest meines Projekts den standardmäßigen Bereitstellungsmechanismus at-most-once verwendet? das Problem des Kindessterbens wird nicht behoben, bevor versucht wird, die Bestätigungsnachricht an den Elternteil zu senden.

    
ShS 27.07.2017, 14:07
quelle

0 Antworten