Es gibt zwei grundlegende Modelle für die Übermittlung von Ereignissen in einer ereignisgesteuerten Architektur.
Ereignisübermittlung oder Publish/Subscribe
Bei der Ereignisübermittlung oder dem Publish/Subscribe-Modell abonnieren die Ereigniskonsumenten eine oder mehrere Klassen von Nachrichten, die von Ereignisproduzenten veröffentlicht werden. Wenn ein Ereignisproduzent ein Ereignis veröffentlicht, wird die Nachricht direkt an alle Abonnenten (Subscribers) gesendet, die sie konsumieren möchten.
In der Regel kümmert sich ein Nachrichtenbroker um die Übertragung von Ereignisnachrichten zwischen Publisher und Subscriber. Der Broker empfängt jede Ereignisnachricht, übersetzt sie gegebenenfalls, behält ihre Reihenfolge im Verhältnis zu anderen Nachrichten bei, stellt sie den Abonnenten (Subscribers) zum Konsum zur Verfügung und löscht sie dann, sobald sie konsumiert wurden (sodass sie nicht erneut konsumiert werden können).
Streaming von Ereignissen
Beim Ereignis-Streaming-Modell veröffentlichen die Ereignisproduzenten Ereignisströme an einen Makler. Ereigniskonsumenten abonnieren die Streams, aber anstatt jedes Ereignis zu empfangen und zu lesen, sobald es veröffentlicht wird, können die Konsumenten an jedem beliebigen Punkt in jeden Stream einsteigen und nur die Ereignisse lesen, die sie lesen möchten. Der entscheidende Unterschied besteht darin, dass die Ereignisse beim Makler verbleiben, auch wenn die Konsumenten sie erhalten haben.
Eine Daten-Streaming-Plattform wie Apache Kafka verwaltet die Protokollierung und Übertragung enormer Mengen von Ereignissen bei sehr hohem Durchsatz (buchstäblich Billionen von Ereignisdatensätzen pro Tag, in Echtzeit, ohne Durchsatzverzögerung). Eine Streaming-Plattform bietet bestimmte Eigenschaften, die ein Nachrichtenmakler nicht hat:
- Ereignispersistenz: Da Konsumenten Ereignisse jederzeit nach ihrer Veröffentlichung lesen können, sind Ereignis-Streaming-Datensätze persistent – sie werden für eine konfigurierbare Zeitspanne aufrechterhalten, die von Sekundenbruchteilen bis zeitlich unbegrenzt reicht. Dadurch können Ereignis-Streaming-Anwendungen sowohl Verlaufs- als auch Echtzeitdaten verarbeiten.
- Verarbeitung komplexer Ereignisse: Wie die Ereignisübermittlung kann auch das Ereignis-Streaming für eine einfache Ereignisverarbeitung verwendet werden, bei der jedes veröffentlichte Ereignis die Übertragung und Verarbeitung durch einen oder mehrere spezifische Konsumenten auslöst. Sie kann aber auch für eine komplexe Ereignisverarbeitung eingesetzt werden, bei der Ereigniskonsumenten ganze Serien von Ereignissen verarbeiten und auf der Grundlage des Ergebnisses Aktionen durchführen.