iX 4/2019
S. 106
Wissen
Messaging-Systeme
Aufmacherbild

Datenströme verarbeiten mit Apache Kafka

Vermittlungskünstler

Messaging-Systeme organisieren und kanalisieren die Datenströme zwischen verschiedenen Systemen. Ein erfolgreicher Vertreter dieser Gattung ist die verteilte Streaming-Plattform Apache Kafka.

Was haben Unternehmen wie Goldman Sachs, trivago, PayPal, Uber, Netflix und BMW gemeinsam? Ihr wirtschaftlicher Erfolg basiert nicht zuletzt auf der Fähigkeit, schnell Erkenntnisse aus großen Datenmengen zu ziehen. Das Tool der Wahl ist bei allen das Messaging-System Apache Kafka.

Systeme, die Streams verarbeiten, lassen sich nach Message Queues mit Punkt-zu-Punkt-Verbindungen und sogenannten Publish-Subscribe-Modellen unterscheiden. Die sendenden Systeme bezeichnet man als Producer, die Empfänger als Consumer.

Bei einer klassischen Message Queue fließen alle eingehenden Nachrichten in eine Warteschlange. Dort werden sie, sobald sie an der Reihe sind, abgearbeitet und verschwinden danach meist aus dem System. Dieser Ansatz lässt sich mit einer Warteschlange im realen Leben vergleichen: Ob man nun am Postschalter, im Supermarkt oder beim Arzt wartet, nachdem man an der Reihe war, ist man fürs Erste fertig und geht seiner Wege.

Das Publish-Subscribe-Modell funktioniert ähnlich wie Radio oder Fernsehen: Mehrere Clients sind gleichzeitig in der Lage, die gewünschten Nachrichten (Messages) zu abonnieren und diese zu konsumieren. Eine Nachricht wird durch das Konsumieren nicht aus dem System entfernt.

Apache Kafka setzt genau an dieser Stelle an und organisiert die hereinströmenden Nachrichten in sogenannten Topics – Sammlungen von Informationen, die im Prinzip beliebig lange vorgehalten werden. Jeder Client kann in einem solchen System grundsätzlich jederzeit auf jede existierende Information zugreifen. Was Kafka darüber hinaus auszeichnet, ist die Fähigkeit, hereinkommende Daten in Echtzeit zu verarbeiten.

Das Messaging-System bietet im Wesentlichen vier Programmierschnittstellen:

 Über die Producer API lassen sich Datenströme in den Cluster einspeisen und in einem oder mehreren Topics ablegen.

 Die Consumer API bindet die Empfängersysteme ein und ermöglicht es diesen, Topics zu abonnieren und auszulesen.

 Mit der Streams API lassen sich in Echtzeit Daten aus einem oder mehreren Topics auslesen, verarbeiten und in den Cluster zurückschieben.

Die vier Kern-APIs von Kafka (Abb. 1)

 Über die Connector API können Entwickler externe Systeme als Consumer oder Producer an den Cluster hängen. Diese können sowohl als Datenquelle als auch als Datensenke fungieren.

Die bereits erwähnten Topics bilden das Herzstück eines Kafka-Clusters. Producer füllen sie – im einfachsten Fall über das zugehörige Kommandozeilentool – mit Daten. Anders als viele RAM-basierte Systeme nutzt Kafka für die Aufbewahrung der Nachrichten ein klassisches Filesystem. Jedes Topic besteht aus mindestens einer Partition, die die Producer konkret adressieren können. Die Partitionen eines Topic entsprechen dabei jeweils einem Directory im Dateisystem des Clusters.