Wie Situationen zu handhaben, wenn das Lese Modell mit den Ereignisprotokollen von sync wurde aus?

StackOverflow https://stackoverflow.com/questions/4238806

  •  26-09-2019
  •  | 
  •  

Frage

Wenn Schnappschüsse von Aggregaten wurden nicht synchron mit Ereignisprotokoll kann ich einfach meine Ereignisse wiedergeben von Anfang Schnappschüsse (die synchron sein sollten). Das gleiche kann ich tun, wenn ich hinzufügen / entfernen neue Felder oder wenn i Logik bestehender Handler ändern.

Für den Fall, ich brauche neue Lese Modell hinzuzufügen (das heißt neue Berichtsansicht) i wieder das gleiche tun kann - ich meine Ereignisse wiederholen werde

.

Aber wie soll ich Situation umgehen, wenn Lese Modell synchronisiert wurde aus dem Ereignisprotokoll? Speicherung von Ereignissen und die Veröffentlichung in einer Transaktion, sondern von Lesemodell Aktualisierung erfolgte in einer anderen Transaktion, die ausfallen kann. Wiederkehrende Ereignisse von Anfang an können helfen, aber es kann ewig dauern. Muss ich ein Konzept von Snapshots für das gesamte Lesemodell?

Wie lösen Sie dieses Problem? Danke.

War es hilfreich?

Lösung

Was ist der Grund für das Scheitern in Event-Handler sein würde? Wie lange ist die "Ewigkeit"?

Read Modell-Updates nicht selten (im Gegensatz zu Befehl Handler), da die Logik innerhalb extrem einfach ist. Ausfälle sind wahrscheinlich durch vorübergehende Probleme (IO / Netzwerkausfall) und würden behandelt werden automatisch durch den Message-Bus verursacht werden.

Wenn jedoch Lese Modell aus irgendeinem Grund beschädigt wurde, dann ist der einfachste Weg, um es zurückzusetzen und durch Veranstaltungen zu streamen. Auch Millionen von Ereignissen würden ziemlich wenig Zeit. Darüber hinaus können Sie immer verwenden Ansatz Map-Reduce.

Ich würde empfehlen, gegen Schnappschüsse Einführung Modelle zu lesen. Ich denke, dies erschwert nur die Architektur ohne signifikante Gewinne.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top