Was ist der Unterschied zwischen Event Driven und Event Sourcing?

13

Ich studiere Domain Driven Design (DDD) und bin auf Begriffe gestoßen: Event Driven und Event Sourcing. Ich weiß, dass es darum geht, Ereignisse vom Produzenten zum Verbraucher zu veröffentlichen und das Protokoll zu speichern. Meine Frage lautet also:

Was ist der Unterschied zwischen Event Driven und Event Sourcing?

JJ Beam
quelle

Antworten:

15

Der Begriff ereignisgesteuerte Architektur wird für jede Art von Softwaresystem verwendet, das auf Komponenten basiert, die hauptsächlich oder ausschließlich über Ereignisse kommunizieren. Beispielsweise verwendet fast jedes wichtige GUI-Framework auf einer gängigen Plattform ereignisgesteuerte Mechanik. Der Begriff "Ereignis" bedeutet in diesem Zusammenhang normalerweise "Benachrichtigung".

Event Sourcing ist ein viel speziellerer Begriff, der sich auf Systeme bezieht, in denen der gesamte Anwendungsstatus als Folge von Ereignissen gespeichert ist. Eine bekannte beliebte Klasse von Beispielen sind Transaktionsdatenbanksysteme, die Statusänderungen in einem Transaktionsprotokoll speichern. Hier bezieht sich der Begriff "Ereignis" eher auf "Statusänderung", nicht nur auf "Benachrichtigung".

Jedes System, das "Event Sourcing" als Kernmechanik verwendet, kann auch als gleichmäßiges System angesehen werden, aber das Gegenteil ist im Allgemeinen nicht der Fall.

Doc Brown
quelle
Hat deine Antwort positiv bewertet. Ich schaue das jetzt selbst nach und bin zuerst auf deine Antwort gestoßen. Wenn Sie sich den Ausdruck "Der gesamte Anwendungsstatus wird als Sequenzereignis gespeichert" ansehen, sehen Sie folgendermaßen aus: "Der Status der Anwendung wird nicht direkt in der aktuellen Form beibehalten. Stattdessen wird jeder Erstellungs-, Aktualisierungs- oder Löschvorgang ausgeführt Ein Objekt oder Modell wird als 'Ereignis' betrachtet, und es sind diese 'Ereignisse', die direkt bestehen bleiben. Um den aktuellen Status eines Objekts zu erhalten, müssen Sie diese Ereignisse erneut abspielen, um eine Kopie davon zu rekonstruieren. " Klingt das richtig?
Panzercrisis
1
@Panzercrisis: Ich hätte schreiben sollen "Event Sourcing speichert alle Änderungen am Anwendungsstatus als Folge von Ereignissen." (wie Fowler). Alle Objekte haben normalerweise einen "aktuellen" Status. Dieser Status kann auch beibehalten (möglicherweise verschoben) werden, ebenso wie die Ereignissequenz selbst. Ich empfehle, Fowlers Artikel zu lesen, um eine vollständige Erklärung zu erhalten.
Doc Brown