Was ist ereignisgesteuert und wie schnell ist Echtzeit?

Abgeschlossen

Wenn wir darüber nachdenken, können wir viele ereignisgesteuerte Szenarien identifizieren. Viele von ihnen erfordern eine Reaktion in Echtzeit.

Was bedeuten wir in Echtzeit?

Eine Reaktion in Echtzeit kann als sofortige Antwort betrachtet werden. Nehmen wir uns ein Beispiel für einen Kassierer in einem Café an, der Sie fragt, was Sie trinken möchten.

Die Kassiererin erwartet eine sofortige Antwort oder zumindest eine Antwort, die sehr bald gegeben wird. Andernfalls könnte der Kassier die Frage neu formulieren oder vermuten, dass Sie unhöflich waren. Eine schnelle Antwort wird angefordert und ist auch angemessen. Die Antwortzeit kann leicht variieren, aber es wird immer noch als "in Echtzeit" angesehen. Daher sollte eine Begrüßung schnell erwidert werden, aber es ist in Ordnung, kurz über Ihre Bestellung nachzudenken, bevor Sie die Frage des Kassierers beantworten.

Wenn Sie dieses Szenario auf Softwaresysteme übertragen, so dreht sich hier alles um Zeitangaben: Antwortzeit, Abschlusszeit, Zugriffszeit, Startzeiten usw. Der Benutzer oder die zugreifenden Anwendungen definieren diese Zeitpunkte.

Hinweis

In Echtzeit führen Systemaufgaben ihre Funktion innerhalb vorgegebener Fristen aus.

Sie sollten immer wissen, was in Ihrem System passiert. Stellen Sie daher sicher, dass Sie das Offensichtliche nicht vergessen, also das Protokollieren, Überwachen und Messen Ihrer Zeiten.

Von Bedeutung

Stellen Sie sicher, dass Sie die Fristen und Zeitangaben vorher angeben und eine Nichtblockingüberwachungslösung für die Überprüfung einrichten.

Zusammenfassend erklären wir uns damit einverstanden, dass Echtzeit superschnell bedeutet, in einem Augenblick. Wie schnell genau hängt von Ihrem angegebenen Szenario ab.

Ereignisgesteuerte Anwendungen

Wenn Sie über ein Klickereignis nachdenken, denken Sie an etwas anderes. Ereignisgesteuerte Anwendungen verwenden das Fire-and-Forget-Prinzip. Das Ereignis wird an das nächste System gesendet oder ausgelöst , bei dem es sich um einen anderen Dienst, einen Event Hub, einen Stream oder einen Nachrichtenbroker wie Kafka handeln kann. Wir warten nicht unbedingt auf eine Antwort vom nächsten im System. Lose Kopplung wird auf Kosten von letztlicher Konsistenz erzielt, die auf einer anderen Ebene sichergestellt werden muss.

Um die Art von ereignisgesteuerten Anwendungen zu identifizieren, schauen wir uns die wichtigsten Architekturprinzipien an, indem wir das Beispiel eines Kunden namens Alex verwenden, der einen Kaffee und einen Cappuccino kauft.

Ereignisbenachrichtigung

Ereignisbenachrichtigung ist die Benachrichtigung eines bestimmten Vorgangs oder Ereignisses. Jedes Ereignis wird separat angezeigt. Das Beispiel eines Kunden namens Alex, der einen Kaffee kauft, und ein Espresso könnte wie folgt aussehen:

1. Veranstaltung: Alex kauft einen Kaffee.

2. Veranstaltung: Alex kauft einen Cappuccino.

Ein Barista müsste sorgfältig allen Ereignissen zuhören, um Alexs gesamte Bestellung aufzunehmen. Aber zwei Baristas könnten die Getränke auch unabhängig vorbereiten und bedienen.

Zustandsübertragung durch Ereignis

Bei der Zustandsübertragung durch ein Ereignis werden alle benötigten Informationen in einem einzelnen Ereignis gespeichert. Das ist praktisch, wenn ein Ereignis verloren geht oder Ihr Dienst nicht auf alle Ereignisse lauscht. In unserem Beispiel würden die Ereignisse wie folgt aussehen:

1. Veranstaltung: Alex kauft einen Kaffee.

2. Veranstaltung: Alex kauft neben dem Kaffee auch einen Cappuccino.

Mit einem Barista könnte es genügen, nur dem zweiten Ereignis zuzuhören. Bei zwei Baristas müsste der zweite den ersten anschauen. Die Bestellung kann zusammen bearbeitet werden, aber der Vorgang kann länger dauern, als wenn er vollständig entkoppelt durchgeführt wird.

Ereignissourcing

Beim Event Sourcing steht der Ereignisspeicher im Mittelpunkt. Wie Sie sehen können, sind die Ereignisse identisch mit dem ersten Beispiel. Aber der Barista ist für dieses Konzept zum aktuellen Zeitpunkt wichtig, wenn der Barista ein Ereignis empfängt und dann alle entsprechenden Ereignisse betrachtet, um den aktuellen Status der von Alex aufgegebenen Bestellungen zu bestimmen.

Mit der zweiten Bestellung weiß der Barista, dass Alex' Bestellung aus einem Kaffee besteht, indem er sich an die erste Bestellung erinnert, und einem Cappuccino, weil dieses Getränk gerade bestellt wurde. Die parallele Arbeit mit einem zweiten Barista ist nicht so einfach möglich.

Wenn wir eine Kasse hinzufügen, um die Bestellungen zu erhalten und die Getränke zu bedienen, können die Baristas unabhängig arbeiten, um die Getränke vorzubereiten. Sie müssen nichts über die Kunden wissen. Der Kassierer ist in diesem Szenario der sogenannte Ereignisspeicher, in dem die Ereignisse gespeichert werden. Event Sourcing fügt eine weitere Komplexitätsebene hinzu, führt aber auch zur Entkopplung.

1. Veranstaltung: Alex kauft einen Kaffee.

Kassierer: (Erster) Bestellung (für Alex): Kaffee

2. Veranstaltung: Alex kauft einen Cappuccino.

Kassierer: (Zweite) Bestellung (für Alex): Cappuccino

Visualisierung, die das Event Sourcing für den Kauf eines Kaffees zeigt.

Telemetriedaten sind Echtzeitereignisse

Es gibt auch andere Beispiele, an die wir denken können. Stellen Sie sich das Szenario vor, ein Kühlsystem beispielsweise für Lebensmittel- oder Arzneimittelhersteller zu betreiben. Sie benötigen eine ständige Kontrolle der Temperatur und anderer relevanter Daten in Ihrem System. Das Bewusstsein für telemetriedaten und die automatische Steuerung wäre für Ihren Erfolg von entscheidender Bedeutung. Das Messen der Telemetrie alle zwei Sekunden und das anschließende Senden an das Steuerungssystem, in dem die Daten analysiert, verarbeitet und behandelt werden, ist ein ereignisgesteuertes System. Außerdem müssen die Daten in Echtzeit verarbeitet werden, da es wichtig ist, schnell zu reagieren, um tragische Folgen für das Unternehmen zu vermeiden.