Ereignisorientierte Architektur (EDA) ist ein Ansatz, bei dem Systemkomponenten über Ereignisse interagieren: Nachrichten über aufgetretene Änderungen oder Aktionen. Das System besteht aus Ereignisgeneratoren (producers), -verarbeitern (consumers) und einem Nachrichtenbus (message bus, broker), der die Ereignisse übermittelt.
EDA ermöglicht den Aufbau von flexibel skalierbaren, schwach gekoppelten Systemen. Eine Änderung in einer Komponente erfordert keine Modifikation anderer: nur die Generierung und Verarbeitung von Ereignissen.
Beispielcode (Generierung und Verarbeitung von Ereignissen in Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Ereignisverarbeiter emitter.on('userCreated', (user) => { console.log('Benutzer erstellt:', user); }); // Ereignis generieren emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Schlüsselfunktionen:
Ist EDA das Gegenteil von Mikrodiensten?
Nein, das sind keine Gegensätze. Mikrodienste verwenden häufig EDA für die Kommunikation zwischen Diensten.
Kann EDA nur mit Nachrichtenbrokern verwendet werden?
Nicht unbedingt. Lokale Ereignisse (z.B. durch das Observer-Muster) implementieren ebenfalls EDA, aber Broker ermöglichen den Aufbau verteilter Systeme.
Garantiert EDA die Unveränderlichkeit von Daten?
Nein. EDA geht um die Interaktion von Komponenten; die Robustheit gegen Wiederverarbeitung (Idempotenz) und die Konsistenz von Daten müssen explizit implementiert werden.