Definition Was ist Apache Kafka?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Apache Kafka ist eine Open Source Software, die die Speicherung und Verarbeitung von Datenströmen über eine verteilte Streaming-Plattform ermöglicht. Sie stellt verschiedene Schnittstellen bereit, um Daten in Kafka-Cluster zu schreiben, Daten zu lesen oder in und aus Drittsysteme zu importieren und zu exportieren.

Anbieter zum Thema

(Bild: © aga7ta - stock.adobe.com)

Apache Kafka wurde ursprünglich als Nachrichten-Queue von LinkedIn entwickelt. Die Open Source Software hat sich als Projekt der Apache Software Foundation zu einer leistungsfähigen Streaming-Plattform mit großem Funktionsumfang weiterentwickelt.

Mithilfe von Apache Kafka lassen sich Datenströme speichern und verarbeiten. Das System basiert auf einer verteilten Architektur, die für eine hohe Fehlertoleranz und Skalierbarkeit optimiert ist. Dadurch eignet sich Apache Kafka für große Datenmengen und Anwendungen im Big-Data-Umfeld.

Über bereitgestellte Schnittstellen ist es möglich, Datenströme von Drittsystemen zu laden oder zu diesen Systemen zu exportieren. Die Kernkomponente des Systems bildet ein verteiltes Commit- beziehungsweise Transaktions-Log. Vorteile von Apache Kafka sind geringe Latenzen, hoher Durchsatz und die Möglichkeit, Echtzeit-Streams zu verarbeiten.

Grundfunktionen von Apache Kafka

Apache Kafka löst die Probleme, die entstehen, wenn Datenquellen und Datenempfänger direkt verbunden werden. Beispielsweise ist es bei der Direktverbindung der Systeme nicht möglich, Daten zwischenzuspeichern, wenn der Empfänger nicht verfügbar ist. Zudem kann ein Sender den Empfänger überlasten, wenn er schneller Daten sendet, als der Empfänger diese entgegennimmt und verarbeitet.

Apache Kafka agiert als Messaging-System zwischen dem Sender und dem Empfänger. Im Gegensatz zu einer reinen Nachrichten-Queue arbeitet Apache Kafka fehlertolerant und ist extrem skalierbar. Das System ist durch sein verteiltes Transaktions-Log in der Lage, Daten zu speichern und mit hoher Verfügbarkeit bereitzustellen. Direkt beim Eintreffen der Daten lassen sich diese in hoher Geschwindigkeit verarbeiten. Daten sind in Echtzeit aggregierbar.

Die Architektur von Apache Kafka

Die Architektur von Apache Kafka besteht aus einem Cluster-Rechnerverbund. In diesem Rechnerverbund speichern sogenannte Broker Nachrichten mit einem Zeitstempel. Diese Informationen nennen sich Topics. Die gespeicherten Informationen werden im Cluster repliziert und verteilt. Als Producer werden Anwendungen bezeichnet, die Nachrichten oder Daten in einen Kafka-Cluster schreiben. Consumer sind Anwendungen, die Daten des Kafka-Clusters lesen. Zusätzlich steht eine Java-Bibliothek mit der Bezeichnung Kafka-Streams zur Verfügung, die Daten aus dem Cluster liest, sie verarbeitet und die Ergebnisse in den Cluster zurückschreibt.

Kafka unterscheidet zwischen „Normal Topics“ und „Compacted Topics“. Normal Topics werden für einen gewissen Zeitraum gespeichert und dürfen eine definierte Speichergröße nicht überschreiten. Sind Zeitraum oder Speicherlimit überschritten, darf Apache Kafka alte Nachrichten löschen. Compacted Topics unterliegen weder einer Zeitbeschränkung noch einer Speicherplatzlimitierung.

Die Schnittstellen von Apache Kafka

Insgesamt bietet Apache Kafka diese vier Hauptschnittstellen (APIs – Application Programming Interfaces):

  • Producer API
  • Consumer API
  • Streams API
  • Connect API

Die Producer API erlaubt Anwendungen das Schreiben von Daten oder Nachrichten in einen Kafka-Cluster. Über die Consumer API lassen sich die Daten eines Kafka-Clusters auslesen. Producer und Consumer API verwenden das Kafka-Nachrichtenprotokoll. Es handelt sich um ein binäres Protokoll. Prinzipiell ist die Entwicklung von Producer- und Consumer-Clients in beliebigen Programmiersprachen möglich.

Bei der Streams API handelt es sich um eine Java-Bibliothek. Sie ist in der Lage, Datenströme zustandsbehaftet und fehlertolerant zu verarbeiten. Über bereitgestellte Operatoren ist das Filtern, Gruppieren und Zuordnen von Daten möglich. Zusätzlich lassen sich eigene Operatoren in die API integrieren. Die Streams API unterstützt Tabellen, Joins und Zeitfenster. Die zuverlässige Speicherung der Anwendungszustände ist durch die Protokollierung aller Zustandsänderungen in Kafka Topics sichergestellt. Tritt ein Ausfall auf, lässt sich der Anwendungszustand durch das Auslesen der Zustandsänderungen aus dem Topic wiederherstellen.

Die Kafka Connect API stellt die Schnittstellen zum Laden und Exportieren von Daten aus beziehungsweise in Drittsysteme zur Verfügung. Sie basiert auf den Producer und Consumer APIs. Die Kommunikation mit den Drittsystemen übernehmen spezielle Konnektoren. Um Drittsysteme verschiedener Hersteller mit Apache Kafka zu verbinden, existieren zahlreiche kommerzielle oder freie Konnektoren.

Anwendungsbereiche von Apache Kafka

Apache Kafka bietet vielfältige Einsatzmöglichkeiten. Typische Anwendungsbereiche sind:

  • Tracking von Aktivitäten auf Webseiten in Echtzeit
  • Überwachung von verteilten Anwendungen
  • Aggregation von Log-Dateien verschiedener Quellen
  • Synchronisierung von Daten in verteilten Systemen

Ein weiteres wichtiges Anwendungsgebiet für Apache Kafka ist das maschinelle Lernen. Apache Kafka unterstützt beim Machine Learning unter anderem:

  • Das Trainieren von Modellen in Echtzeit,
  • das Ableiten analytischer Modelle in Echtzeit sowie
  • das Überwachen und Analysieren.

Beispiele für Anwendungen des Machine Learnings sind die Betrugserkennung durch Verknüpfung von Echtzeit-Zahlungsinformationen mit historischen Daten und Mustern, das Cross Selling durch maßgeschneiderte, kundenspezifische Angebote auf Basis aktueller, historischer oder standortbezogener Daten oder die vorausschauende Wartung durch die Analyse von Maschinendaten.

(ID:45531650)