Schema eines Durable Stream: Links schreiben mehrere Sender Ereignisse in ein Log, dargestellt als Reihe nummerierter Kästchen mit Offsets 0 bis 7, die nur hinten wächst. Das Log liegt dreifach kopiert auf verschiedenen Servern. Rechts lesen zwei unabhängige Empfänger denselben Strom an unterschiedlichen Positionen, ein Pfeil zeigt, wie ein Empfänger nach einem Absturz ab seinem gespeicherten Offset weiterliest.

Durable Streams

Durable Streams sind fortlaufende Datenströme, die dauerhaft gespeichert werden, statt nach der Zustellung zu verschwinden. Dadurch können Programme einen Datenstrom später erneut lesen, an einer alten Stelle weitermachen oder nach einem Absturz sauber aufsetzen.

In vielen Computersystemen entstehen Daten nicht auf einmal, sondern nach und nach. Jede Kartenzahlung, jeder Klick, jede Temperaturmessung ist ein einzelnes kleines Ereignis. Eine solche fortlaufende Folge von Ereignissen nennt man einen Datenstrom. Bei einfachen Datenströmen ist ein Ereignis weg, sobald der Empfänger es gelesen hat. Durable Streams machen es anders: Sie schreiben jedes Ereignis zusätzlich auf eine Festplatte und heben es dort für Stunden, Tage oder Jahre auf. Der Strom lässt sich deshalb später noch einmal von vorne oder ab einer beliebigen Stelle abspielen.

Warum ein verlorenes Ereignis teuer wird

Der wichtigste Grund für Haltbarkeit ist Ausfallsicherheit. Server stürzen ab, Netzwerke brechen weg, Software wird neu gestartet. Bei einem flüchtigen Datenstrom sind die Ereignisse aus diesen Minuten unwiederbringlich verloren. Bei einem Durable Stream liegen sie weiterhin auf der Platte. Das Programm merkt sich, bis wohin es gekommen ist, und liest danach einfach weiter.

Ein zweiter Grund ist die Entkopplung von Sender und Empfänger. Ein Onlineshop kann Bestellungen in den Strom schreiben, auch wenn die Rechnungssoftware gerade wartungsbedingt offline ist. Die Bestellungen warten geduldig, bis der Empfänger zurück ist. Ohne dauerhafte Speicherung müsste der Sender entweder blockieren oder Daten wegwerfen.

Dazu kommt ein praktischer Vorteil im Alltag von Entwicklern: das erneute Abspielen. Wenn eine Auswertung einen Fehler enthielt, korrigiert man den Programmcode und lässt die alten Ereignisse noch einmal durchlaufen. Das Ergebnis wird komplett neu berechnet. Bei flüchtigen Strömen ist diese zweite Chance schlicht nicht vorhanden.

Das Logbuch mit fortlaufender Nummer

Technisch ist ein Durable Stream meist ein sogenanntes Log, also ein Protokoll. Neue Ereignisse werden nur hinten angehängt, nie in der Mitte geändert. Jedes Ereignis bekommt eine fortlaufende Nummer, den Offset. Man kann sich das wie ein Kassenbuch vorstellen, in dem jede Zeile nummeriert ist und niemand radieren darf.

Der Empfänger merkt sich nur eine einzige Zahl: den Offset, bis zu dem er gelesen hat. Nach einem Neustart fragt er den Strom nach allem ab dieser Nummer. Mehrere Empfänger können denselben Strom unabhängig lesen, jeder mit seinem eigenen Stand. Genau deshalb stört sich eine Betrugserkennung nicht an der Buchhaltung, obwohl beide dieselben Zahlungsereignisse verarbeiten.

Damit ein einzelner Server nicht zum Nadelöhr wird, teilt man den Strom in Abschnitte auf, die auf verschiedene Rechner verteilt liegen. Zusätzlich wird jeder Abschnitt mehrfach kopiert, typischerweise dreifach. Fällt eine Festplatte aus, übernimmt eine Kopie. Haltbarkeit bedeutet hier also nicht nur Speichern, sondern mehrfaches Speichern an verschiedenen Orten.

Von Kafka bis zum KI-Agenten

Das bekannteste System dieser Art heißt Apache Kafka; ähnliche Dienste bieten Amazon, Google und Microsoft in ihren Rechenzentren an. Banken schicken darüber Transaktionen, Streamingdienste ihre Klickdaten, Logistikfirmen die Positionen ihrer Lastwagen. Wer in Stellenanzeigen oder Quartalsberichten von Event Streaming liest, meint fast immer diese Technik. Sichtbar wird sie für Nutzer selten, sie arbeitet im Hintergrund.

In der KI-Welt hat der Begriff zuletzt eine zweite Bedeutung bekommen. Sprachmodelle geben ihre Antwort Wort für Wort aus, und Programme, die selbstständig über viele Minuten arbeiten, produzieren dabei lange Ereignisfolgen. Bricht die Verbindung ab, war ohne Speicherung die halbe Antwort verloren. Anbieter richten deshalb dauerhafte Ströme ein, an die sich ein Client nach einem Abbruch wieder anhängen kann.

Ein häufiger Irrtum ist, Durable Streams mit einer normalen Datenbank zu verwechseln. Eine Datenbank speichert den aktuellen Zustand, etwa den heutigen Kontostand. Ein Durable Stream speichert die Ereignisse, die zu diesem Zustand geführt haben. Beides ergänzt sich: Aus dem Strom lässt sich der Zustand jederzeit neu berechnen, umgekehrt geht das nicht.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.