Definition: Open-Source-Software zur Verarbeitung von Datenströmen Was ist Apache Kafka?

Apache Kafka ist ein Open-Source-Projekt der Apache Software Foundation. Als Streaming-Plattform für verteilte Architekturen konzipiert, lassen sich mit Apache Kafka Datenströme verarbeiten und speichern.

LinkedIn als Vorbild: Mit Apache Kafka lassen sich Datenströme verarbeiten und speichern.
LinkedIn als Vorbild: Mit Apache Kafka lassen sich Datenströme verarbeiten und speichern.
(Bild: gemeinfrei (© Gerd Altmann) / Pixabay )

Die Open-Source-Software Apache Kafka geht auf eine Entwicklung von LinkedIn zurück. Sie war ursprünglich als Nachrichten-Queue gedacht, hat sich mittlerweile aber zu einer leistungsfähigen Plattform für das Verarbeiten und Speichern von Daten-Streams entwickelt. Heute ist Apache Kafka ein Projekt der Apache Software Foundation und zählt zu den beliebtesten und am häufigsten eingesetzten Stream-Prozessoren.

Die Software ist für verteilte Plattformen konzipiert, bietet ein hohe Fehlertoleranz und ist einfach skalierbar. Typische Einsatzbereiche sind Anwendungen im Big-Data-Umfeld. Apache Kafka stellt verschiedene Schnittstellen zur Verfügung, mit denen sich Datenströme von externen Systemen importieren oder zu diesen exportieren lassen.

Eine wichtige Kernkomponente der Software ist das verteilte Commit- und Transaktions-Log. Die Verarbeitung von Datenströmen mit Apache Kafka weist eine niedrige Latenz auf, bietet hohen Datendurchsatz und ist echtzeitfähig. Viele bekannte Unternehmen wie Airbnb, LinkedIn, Netflix oder Microsoft verwenden die Software für das Stream Processing in verschiedenen Anwendungen. Cloud-Lösungen wie die Amazon Web Services (AWS), Microsoft Azure oder die Google Cloud Platform (GCP) bieten Unterstützung von Apache Kafka. Offiziell erschienen ist Apache Kafka im Jahr 2014. Die Software steht unter Apache-Lizenz 2.0. Ihre aktuelle Version ist Apache Kafka 2.6.0 (Stand August 2020).

Die wichtigsten Grundfunktionen von Apache Kafka

Apache Kafka ist eine Instanz zwischen Datenquelle und Datenempfänger. Sie optimiert den Austausch und die Verarbeitung der Daten. Die Software löst die Probleme, die bei einer direkten Verbindung zwischen Quelle und Empfänger auftreten. Eines dieser Probleme ist beispielsweise, dass es bei einer Direktverbindung nicht möglich ist, Daten zwischenzuspeichern, sollte der Empfänger gerade nicht verfügbar sein.

Weitere Probleme beim direkten Austauschen und Verarbeiten der Datenströme treten auf, wenn der Empfänger überlastet ist oder Daten langsamer entgegennimmt, als der Sender sie verschickt. Apache Kafka ist nicht auf die Funktion einer einfachen Nachrichten-Queue beschränkt. Die Software arbeitet extrem fehlertolerant und ist in hohem Maß skalierbar.

Die drei Grundfunktionen von Apache Kafka sind:

  • 1. Bereitstellen und Entgegennehmen der Datenströme,
  • 2. Speichern der Daten,
  • 3. Verarbeitung von Datenströmen in Echtzeit.

Die verteilte Architektur von Apache Kafka

Apache Kafka ist von Grund auf als leicht skalierbares und fehlertolerantes verteiltes System konzipiert. Eine Apache-Kafka-Streaming-Plattform besteht aus einem Cluster-Rechnerverbund. Innerhalb des Rechnerverbunds sind sogenannte Broker für das Speichern von Nachrichten mit Zeitstempeln verantwortlich. Die Informationen werden in Topics gespeichert, die in Partitionen aufgeteilt sind.

Topics lassen sich in „Normal Topics“ und „Compacted Topics“ unterscheiden. Während Normal Topics hinsichtlich Speicherzeit und Speichergröße begrenzt sind, dürfen Compacted Topics diese Limitierungen überschreiten. Apache Kafka sorgt für die Verteilung und Replikation der Partitionen der Topics innerhalb eines Clusters. Producer sind Anwendungen, die Nachrichten in einen Cluster schreiben. Consumer lesen die Nachrichten eines Clusters. Zur Verarbeitung der Datenstreams kommt die Java-Bibliothek Kafka Streams zum Einsatz. Mit der Java-Bibliothek lassen sich Daten eines Clusters lesen, verarbeiten und wieder in den Cluster zurück schreiben.

Die Hauptschnittstellen von Apache Kafka

Apache Kafka stellt vier Hauptschnittstellen zur Verfügung. Diese Schnittstellen sind:

  • die Producer-Schnittstelle,
  • die Consumer-Schnittstelle,
  • die Streams-Schnittstelle,
  • die Connect-Schnittstelle.

Darüber hinaus ist noch eine weitere Schnittstelle, die AdminClient-Schnittstelle, vorhanden. Sie dient zur Verwaltung und Überwachung eines Kafka-Clusters.

Die Aufgabe der Producer-Schnittstelle ist es, den Anwendungen das Schreiben von Nachrichten in einen Cluster zu ermöglichen. Dort werden die Nachrichten, wie im vorigen Kapitel beschrieben, in Topics gespeichert. Über die Consumer-Schnittstelle lesen die Anwendungen die in einem Kafka-Cluster in Topics gespeicherten Nachrichten. Die Kommunikation über die Producer- und Consumer-Schnittstelle erfolgt über das binäre Kafka-Nachrichtenprotokoll. Clients für Consumer und Producer lassen sich in beliebigen Programmiersprachen realisieren. Die Streams-Schnittstelle ist eine Java-Bibliothek, die Datenströme fehlertolerant und zustandsbehaftet verarbeitet. Sie verwandelt eingehende Datenströme in der gewünschten Form in die ausgehenden Datenströme. Operatoren zur Verarbeitung der Datenstreams ermöglichen es, Nachrichten zu filtern, zu gruppieren oder zuzuordnen. Auch selbst entworfenen Operatoren können in die Streams-Schnittstelle integriert werden. Die Connect-Schnittstelle schließlich erlaubt das Importieren und Exportieren von Daten in beziehungsweise aus Drittsystemen. Sie basiert auf den Funktionen und dem Nachrichtenprotokoll der Producer- und Consumer-Schnittstelle und bindet die Drittsysteme über spezielle Konnektoren an. Zu Anbindung von Drittsystemen unterschiedlicher Hersteller existieren viele freie und kommerzielle Konnektoren, die sich direkt einsetzen lassen.

Typische Anwendungsbereiche der Stream-Verarbeitung mit Apache Kafka

Das Verarbeiten und Speichern von Datenströmen mit der freien Software Apache Kafka macht überall dort Sinn, wo Datenströme zwischen Systemen ausgetauscht werden. Die Anwendungsmöglichkeiten reichen von der einfachen Nachrichten-Queue zum Abonnieren und Veröffentlichen von Nachrichten – analog zu LinkedIn – über die Nachrichtenübertragung als Broadcast bis zur Speicherung und Verarbeitung von Datenströmen mit großem Informationsgehalt.

Typische Anwendungsbereiche von Apache Kafka sind:

  • das Monitoring verteilter Anwendungen und Prozesse,
  • das Aggregieren und Analysieren von Log-Dateien verschiedener Systeme,
  • das Synchronisieren von Daten und Informationszuständen verteilter Systeme,
  • das Tracking von Internetseiten in Echtzeit,
  • das Verarbeiten von Datenstreams im Umfeld des Machine Learnings (ML).

Vorteile des Stream Processings mit Apache Kafka

Das Speichern und Verarbeiten von Datenströmen mit Apache Kafka bietet zahlreiche Vorteile. So löst Apache Kafka als zwischengeschaltete Instanz die typischen Probleme, wenn Datenquelle und Datenempfänger direkt verbunden sind. Kafka arbeitet dank der verteilten Cluster-Architektur bestehend aus Broker, Topics und Partitionen extrem fehlertolerant und ist hoch verfügbar. Das System lässt sich leicht skalieren, eignet sich für große Datenmengen, bietet kurze Latenzzeiten und ist echtzeitfähig.

Die Software steht unter freier Apache 2.0 Lizenz und kann für kommerzielle oder wissenschaftlich Anwendungen beliebig eingesetzt werden. Zahlreiche Cloud-Anbieter unterstützen Apache Kafka auf ihren Cloud-Plattformen. Im Web existieren eine große Vielfalt an Open-Source-Tools und eine große Community. Kafka ist schnell eingerichtet, einfach zu bedienen und bietet einen großen Funktionsumfang. Zur Anbindung von Drittsystemen sind viele verschiedene kommerzielle oder freie Konnektoren verfügbar, die direkt einsetzbar sind.

Ohne gezielte Kommunikation mit den Clients geht nichts: Aufgaben und Funktionen eines Webservers im Überblick.

Apache, Microsoft IIS, Nginx & Co. – Dienste zur Bereitstellung von Daten und Website-Inhalten

Was ist ein Webserver?

(ID:46974110)

Über den Autor