2016-09-13 2 views
0

Ich habe Zeit als den besten Wert als Ereignisversion gefunden.Kann ich Time als global eindeutige Event-Version verwenden?

kann ich vollkommen unabhängig events verschiedenen event sources auf verschiedenen servers fusionieren, wenn nötig, ohne Sorge um read sideevent order synchronization zu sein. Ich weiß, welche event (von server 1) vor der anderen (von server 2) ohne die Notwendigkeit für global sequential event id generator passiert ist, die alle gelesenen Seiten abhängig davon macht.

Solange die Zeit eine global immer sequentielle Ereignisversion ist, können verschiedene Teams in Unternehmen als verteilt event sources oder event readers handeln und jeder kann immer auf die contract weiterleiten.

Die weltweit einfachste Benachrichtigung von write side bis subscribed read sides gefolgt von einer Abfrage pulling the recent changes von der zugrunde liegenden write side kann alles vereinfachen.

Gibt es irgendwelche Nebenwirkungen, die mir nicht bekannt sind?

+0

Uhren auf verschiedenen Maschinen können auseinanderdriften. Sie können sich also nicht darauf verlassen, dass Zeit überall gleich ist. –

+0

@Sergio Tulentsev: Ist keine Quelle der Wahrheit für die Zeit? – Mohsen

+1

Sie können die Synchronisation mit Atomuhren einrichten, ja. –

Antwort

1

Die Zeit nimmt tatsächlich zu und Sie erhalten eine deterministische Zahl, jedoch dient die Versionierung von Ereignissen nicht nur der Vermeidung von Konflikten. Wir sagen immer, dass, wenn wir eine neue Veranstaltung in den Event-Shop, senden wir auch die neue Event-Version dort und es müssen entsprechen der erwarteten Version auf der Event-Store-Seite, die muss die vorherige Version plus genau sein ein. Wenn es zwischen zwei Ereignissen tausend oder drei Millionen Zecken geben wird - das interessiert mich nicht, das gibt mir nicht die Informationen, die ich brauche. Und wenn ich ein Ereignis auf dem Sprung verpasst habe, ist es wichtig zu wissen. So würde ich nicht verwenden Sie alles andere als inkrementellen Zähler, mit Ereignissen versioniert pro Aggregat/Stream.

+0

Ich will nicht aufhören zu verwenden inkrementelle Ereignisversionen pro Aggregat, damit ich nicht die Möglichkeit verliere, die Konflikte zu steuern, während ein neues Ereignis dem Stream hinzugefügt wird. – Mohsen

+0

Was ich versuche zu erhalten, ist in der Lage, verschiedene Ereignisse von verschiedenen Ereignisquellen in der richtigen Weise neu anordnen, wenn ich sie lese.So Lesen Seitenmodule besser skalieren.Und ich kann die Schreibseite Entwicklung leichter zu verteilen von verschiedenen Teams gemacht. – Mohsen

+0

Wenn Sie den EventStore (http://geteventstore.net) verwenden, können Sie dies einfach durch Projektionen und das Ausgeben von Linkereignissen und Abonnements durchführen, falls erforderlich. Ich denke, irgendwie kann dieser Ansatz auf jede Art von Event-Laden angewendet werden, aber Projektionen sind nicht einfach. –

Verwandte Themen