Was ist Apache Kafka?

Junge Studentin und erwachsene Frau arbeiten am selben Schreibtisch

Autoren

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Was ist Apache Kafka?

Apache Kafka ist eine verteilte Open-Source-Plattform für Event-Streaming, die Echtzeitdaten verarbeitet. Kafka eignet sich hervorragend zur Unterstützung ereignisgesteuerter Anwendungen und zum Aufbau zuverlässiger Datenpipelines und bietet geringe Latenz sowie einen hohen Durchsatz bei der Datenübertragung.

Heute produzieren Milliarden von Datenquellen kontinuierlich Informationsströme, oft in Form von Ereignissen, grundlegenden Datenstrukturen, die jedes Ereignis im System oder in der Umgebung aufzeichnen. 

Ein Ereignis ist in der Regel eine Aktion, die eine andere Aktion als Teil eines Prozesses auslöst. Ein Kunde, der eine Bestellung aufgibt, einen Sitzplatz für einen Flug wählt oder ein Registrierungsformular ausfüllt – dies alles sind Beispiele für Ereignisse. An einem Ereignis muss nicht unbedingt eine Person beteiligt sein. So ist z. B. auch die Meldung eines angeschlossenen Thermostats über die Temperatur zu einem bestimmten Zeitpunkt ein Ereignis.

Event Streaming bietet Anwendungen die Möglichkeit, sofort auf neue Informationen zu reagieren. Streaming-Datenplattformen wie Apache Kafka ermöglichen es Entwicklern, Systeme zu entwickeln, die Daten bei ihrem Eintreffen aufnehmen, verarbeiten und darauf reagieren und dabei die Reihenfolge und Zuverlässigkeit der einzelnen Ereignisse beibehalten.

Kafka hat sich zur am weitesten verbreiteten Event-Streaming-Plattform entwickelt, die in der Lage ist, täglich Billionen von Datensätzen ohne spürbare Leistungsverzögerung aufzunehmen und zu verarbeiten, um skalierbare Volumina zu unterstützen. Mehr als 80 % der Fortune-500-Unternehmen nutzen Kafka, darunter Target, Microsoft, AirBnB und Netflix, um datengesteuerte Customer Experiences in Echtzeit zu ermöglichen.

Der Ursprung von Apache Kafka

Im Jahr 2011 wurde Apache Kafka von LinkedIn entwickelt, um den wachsenden Bedarf des Unternehmens an einem System mit hohem Durchsatz und geringer Latenz zu befriedigen, das große Mengen von Ereignisdaten in Echtzeit verarbeiten sollte. Kafka wurde mit Java und Scala entwickelt und später der Apache Software Foundation als Open Source zur Verfügung gestellt.

Während Unternehmen bereits traditionelle Nachrichtenwarteschlangensysteme unterstützten oder verwendeten (z. B. Amazon SQS von AWS), führte Kafka eine grundlegend andere Messaging-Systemarchitektur ein.

Im Gegensatz zu herkömmlichen Nachrichtenwarteschlangen, die Nachrichten nach dem Verarbeiten löschen, bewahrt Kafka Nachrichten für eine konfigurierbare Dauer auf. So können mehrere Nutzer die gleichen Daten unabhängig voneinander abrufen. Diese Fähigkeit macht Kafka zur idealen Lösung für Messaging und Event Sourcing, die Stream-Verarbeitung und den Aufbau von Echtzeit-Datenpipelines.

Heute ist Kafka der De-facto-Standard für Echtzeit-Event-Streaming. Zu den Branchen, die auf Kafka setzen, gehören das Finanzwesen, der E-Commerce, die Telekommunikation und das Transportwesen, in denen die Fähigkeit zum schnellen und zuverlässigen Umgang mit großen Datenmengen von entscheidender Bedeutung ist.

Funktionsweise von Apache Kafka

Kafka ist eine verteilte Plattform. Sie läuft als fehlertoleranter, hochverfügbarer Cluster, der mehrere Server und sogar mehrere Rechenzentren umfassen kann.

Kafka hat drei Hauptfunktionen:

  1. Es ermöglicht Anwendungen, Daten- oder Event-Streams zu veröffentlichen oder zu abonnieren.
  2. Es speichert Aufzeichnungen genau in der Reihenfolge, in der sie aufgetreten sind, mit fehlertolerantem und dauerhaftem Speicher.
  3. Es verarbeitet Aufzeichnungen in Echtzeit, sobald sie eingehen.

Produzenten (Anwendungen oder Themen) schreiben Datensätze in Themen, die Logs genannt werden und die Datensätze in der Reihenfolge ihres Auftretens speichern. Die Themen werden dann in Partitionen aufgeteilt und über einen Cluster von Kafka-Brokern (Servern) verteilt.

Innerhalb jeder Partition behält Kafka die Reihenfolge der Datensätze bei und speichert sie dauerhaft auf der Festplatte für die Dauer einer konfigurierbaren Aufbewahrungsfrist. Während die Reihenfolge innerhalb einer Partition garantiert ist, gilt dies nicht für alle Partitionen. Je nach den Anforderungen der Anwendung können die Verbraucher unabhängig voneinander in Echtzeit oder ab einem bestimmten Offset von diesen Partitionen lesen.

Kafka gewährleistet Zuverlässigkeit durch Partitionsreplikation. Jede Partition hat einen Leader (auf einem Broker) und einen oder mehrere Follower (Replikate) auf anderen Brokern. Mit dieser Replikation können Knotenausfälle ohne Datenverlust toleriert werden.

In der Vergangenheit stützte sich Kafka auf Apache ZooKeeper, einen zentralisierten Koordinationsdienst für verteilte Broker. ZooKeeper stellte sicher, dass die Kafka-Broker synchronisiert blieben, selbst wenn einige Broker ausfielen. Im Jahr 2011 führte Kafka den KRaft-Modus (Kafka Raft Protocol) ein, der ZooKeeper überflüssig machte, indem er diese Aufgaben in den Kafka-Brokern selbst konsolidierte. Diese Verlagerung reduziert externe Abhängigkeiten, vereinfacht die Architektur und macht Kafka-Cluster fehlertoleranter und einfacher zu verwalten und zu skalieren.

Luftaufnahme einer Autobahn

Bleiben Sie in der Cloud

Abonnieren Sie den wöchentlichen Think-Newsletter und erhalten Sie Tipps von Experten zur Optimierung von Multi-Cloud-Einstellungen in Zeiten von KI.

Apache Kafka-APIs

Entwickler können die Funktionen von Kafka über vier primäre Programmierschnittstellen (APIs) nutzen:

  1. Producer API
  2. Nutzer-API
  3. Streams API
  4. Connector API
Producer API

Die Producer API ermöglicht es einer Anwendung, einen Stream in einem Kafka-Thema zu veröffentlichen. Nachdem ein Datensatz in ein Topic geschrieben wurde, kann er nicht mehr geändert oder gelöscht werden. Stattdessen verbleibt er für eine bestimmte Zeit in dem Topic, z. B. zwei Tage oder bis der Speicherplatz erschöpft ist.

Nutzer-API

Die Consumer API ermöglicht es einer Anwendung, sich für ein oder mehrere Topics zu registrieren und den im Topic gespeicherten Stream zu empfangen und zu verarbeiten. Sie kann mit Datensätzen im Thema in Echtzeit arbeiten oder vergangene Datensätze aufnehmen und verarbeiten.

Streams API

Diese API baut auf den Producer und Consumer APIs auf und fügt komplexe Verarbeitungsfunktionen hinzu, die einer Anwendung eine kontinuierliche Front-to-Backstream-Verarbeitung ermöglichen. Konkret beinhaltet die Streams API das Aufnehmen von Datensätzen aus einem oder mehreren Themen, das Analysieren, Aggregieren oder Umwandeln dieser Datensätze und das Veröffentlichen der resultierenden Streams in denselben oder anderen Themen.

Während die Producer und Consumer APIs für die einfache Stream-Verarbeitung verwendet werden können, ermöglicht die Streams API die Entwicklung von anspruchsvolleren Daten- und Event-Streaming-Anwendungen.

Connector API

Mit dieser API können Entwickler Konnektoren erstellen, d. h. wiederverwendbare Producer oder Consumer, welche die Integration einer Datenquelle in einen Kafka-Cluster vereinfachen und automatisieren.

Anwendungsfälle für Apache Kafka

Entwickler verwenden Kafka hauptsächlich für die Erstellung von zwei Arten von Anwendungen:

  • Echtzeit-Streaming-Datenpipelines
  • Echtzeit-Streaming-Anwendungen

Echtzeit-Streaming-Datenpipelines

Anwendungen, die speziell dafür entwickelt wurden, Millionen und Abermillionen von Daten oder Ereignisaufzeichnungen zwischen Unternehmenssystemen zu verschieben, und zwar in großem Maßstab und in Echtzeit. Die Apps müssen die Daten zuverlässig verschieben, ohne dass das Risiko einer Beschädigung, einer Duplizierung von Daten oder anderer Probleme besteht, die typischerweise bei der Übertragung solch großer Datenmengen mit hoher Geschwindigkeit auftreten.

Beispielsweise nutzen Finanzinstitute Kafka, um Tausende von Transaktionen pro Sekunde über Zahlungs-Gateways, Dienste zur Betrugserkennung und Buchhaltungssysteme zu streamen und so einen präzisen Echtzeit-Datenfluss ohne Duplikate oder Verluste sicherzustellen.

Echtzeit-Streaming-Anwendungen

Anwendungen, die von Aufzeichnungs- oder Event-Streams gesteuert werden und die selbst Streams erzeugen. In der digitalisierten Welt begegnen wir diesen Anwendungen jeden Tag.

Beispiele hierfür sind E-Commerce-Websites, die die Produktverfügbarkeit in Echtzeit aktualisieren, oder Plattformen, die personalisierte Inhalte und Werbung auf der Grundlage von Live-Nutzeraktivitäten bereitstellen. Kafka ermöglicht diese Erfahrungen, indem es Benutzerinteraktionen direkt in Analyse- und Empfehlungsmaschinen überträgt.

Andere Anwendungsfälle für Apache Kafka

  • Microservices: Kafka erleichtert die Kommunikation zwischen Microservices, indem es asynchrones, ereignisgesteuertes Messaging ermöglicht. Dank dieser Funktion können Dienste über andere Dienste hinweg Aktionen auslösen, ohne eng gekoppelt zu sein, was wiederum skalierbare und entkoppelte Systemarchitekturen unterstützt.
  • Containerisierte cloudnnative Umgebungen: Kafka lässt sich nahtlos in cloudnative Plattformen integrieren, die Docker für die Containerisierung und Kubernetes für die Container-Orchestrierung verwenden. Dieses Setup unterstützt eine skalierbare, fehlertolerante, ereignisgesteuerte Kommunikation und minimiert gleichzeitig den Bedarf an manueller Infrastrukturverwaltung. Kafka kann innerhalb von Kubernetes automatisch skalieren und sich von Ausfällen erholen. Damit ist es ideal für dynamische Cloud-Computing-Umgebungen, in denen verschiedene Anwendungsworkloads laufen.
  • Data Lakes und Data Warehousing: Kafka fungiert als Echtzeit-Datenpipeline zwischen Datenquellen und Speicherplattformen, wie Data Lakes oder Data Warehouses. Diese Funktion ermöglicht das Streaming großer Datenmengen zur zeitgerechten Aufnahme und Analyse, was für eine moderne Workloads in den Bereichen Analyse und Business Intelligence unerlässlich ist.
  • Verarbeitung von IoT-Daten (Internet der Dinge): Kafka eignet sich hervorragend für die Verarbeitung kontinuierlicher Datenströme von IoT-Geräten und ermöglicht das Echtzeit-Routing von Daten mit hohem Durchsatz und geringer Latenz an Ziele wie Datenbanken, Analytics Engines oder Überwachungstools. Diese Funktion unterstützt zeitkritische Anwendungen in Branchen wie der Fertigung und dem Gesundheitswesen.
webMethods Hybrid Integration

Integration für das KI-Zeitalter neu gedacht

IBM Web Methods Hybrid Integration zeigt, wie Unternehmen Cloud- und lokale Anwendungen nahtlos miteinander verbinden und so eine agile und skalierbare digitale Transformation ermöglichen können. 

Das Apache Kafka-Ökosystem

Kafka ist mit mehreren anderen Technologien integriert, von denen viele zur Apache Software Foundation (ASF) gehören. Unternehmen verwenden diese Technologien in der Regel in größeren ereignisgesteuerten Architekturen sowie in Lösungen für die Stream-Verarbeitung oder Big-Data-Analyse.

Einige dieser Technologien sind Open Source, während Confluent, eine Plattform, die auf Kafka aufbaut, Funktionen und verwaltete Dienste für die Echtzeit-Datenverarbeitung in großem Umfang bietet. Unternehmen wie IBM, Amazon Web Services und andere bieten Kafka-basierte Lösungen an (z. B. IBM Event Streams, Amazon Kinesis), die mit Kafka für skalierbares Event-Streaming integriert werden.

Das Apache Kafka-Ökosystem umfasst:

  • Apache Spark
  • Apache NiFi
  • Apache Flink
  • Apache Hadoop
  • Apache Camel
  • Apache Cassandra

Apache Spark

Apache Spark ist eine Analyse-Engine für die Verarbeitung großer Datenmengen. Mit Spark können Sie Analysen von Datenströmen durchführen, die von Apache Kafka geliefert werden, und Anwendungen zur Stream-Verarbeitung in Echtzeit erstellen, wie z. B. Clickstream-Analysen.

Apache NiFi

Apache NiFi ist ein System zur Verwaltung von Datenströmen mit einer visuellen Drag-and-Drop-Oberfläche. Da NiFi sowohl als Kafka-Produzent als auch als Kafka-Konsument laufen kann, ist es ein ideales Tool für die Verwaltung von Datenflüssen, die Kafka nicht bewältigen kann.

Apache Flink

Apache Flink ist eine Engine für die Durchführung umfangreicher Berechnungen auf Ereignisströmen mit gleichbleibend hoher Geschwindigkeit und geringer Latenz. Flink kann Datenströme als Kafka-Konsument aufnehmen, Echtzeitoperationen auf der Grundlage dieser Datenströme durchführen und die Ergebnisse für Kafka oder eine andere Anwendung veröffentlichen.

Apache Hadoop

Apache Hadoop ist ein verteiltes Software-Framework, mit dem Sie riesige Datenmengen in einem Cluster von Computern speichern können, um sie für Big Data-Analysen, maschinelles Lernen, Data Mining und andere datengesteuerte Anwendungen zu verwenden, die strukturierte und unstrukturierte Daten verarbeiten. Kafka wird häufig zur Erstellung einer Echtzeit-Pipeline für Streaming-Daten in einem Hadoop-Cluster verwendet.

Apache Camel

Apache Camel ist ein Integrations-Framework mit einer regelbasierten Routing- und Mediation-Engine. Es unterstützt Kafka als eine Komponente, die eine einfache Datenintegration mit anderen Systemen (z. B. Datenbanken, Messaging Queues) ermöglicht, wodurch Kafka Teil einer größeren ereignisgesteuerten Architektur werden kann.

Apache Cassandra

Apache Cassandra ist eine hochgradig skalierbare NoSQL-Datenbank, die entwickelt wurde, um große Datenmengen auf vielen handelsüblichen Servern zu verarbeiten, ohne dass ein einzelner Ausfallpunkt auftritt.

Kafka wird häufig zum Streamen von Daten an Cassandra verwendet, um Daten in Echtzeit aufzunehmen und skalierbare, fehlertolerante Anwendungen zu erstellen.

Kafka vs. RabbitMQ

RabbitMQ ist ein beliebter Message Broker auf Open-Source-Basis, der die Kommunikation von Anwendungen, Systemen und Diensten durch die Übersetzung von Messaging-Protokollen ermöglicht. Da Kafka als Message Broker begann (und immer noch als solcher verwendet werden kann) und RabbitMQ (unter anderem) ein Publish/Subscribe-Messaging-Modell unterstützt, werden Kafka und RabbitMQ oft als Alternativen verglichen. Sie dienen jedoch unterschiedlichen Zwecken und sind für verschiedene Arten von Anwendungsfällen konzipiert. So können Kafka-Themen beispielsweise mehrere Abonnenten haben, während jede RabbitMQ-Nachricht nur einen haben kann. Außerdem sind Kafka-Themen dauerhaft, während RabbitMQ-Nachrichten gelöscht werden, sobald sie verbraucht sind.

Wenn Sie sich für eine der beiden Lösungen entscheiden, sollten Sie unbedingt die spezifischen Anforderungen Ihrer Anwendung berücksichtigen, wie z. B. Durchsatz, Lebensdauer der Nachrichten und Latenzzeit. Kafka eignet sich gut für das Streaming von Ereignissen in großem Umfang, während RabbitMQ sich in Szenarien auszeichnet, die ein flexibles Nachrichten-Routing und eine Verarbeitung mit geringer Latenz erfordern.

Apache Kafka und Open-Source-KI

Die Integration von Apache Kafka und Open-Source-KI verändert die Art und Weise, wie Unternehmen mit Echtzeitdaten und künstlicher Intelligenz umgehen. In Kombination mit Open-Source-KI-Tools ermöglicht Kafka die Anwendung von vortrainierten KI-Modellen auf Live-Daten und unterstützt so die Entscheidungsfindung und Automatisierung in Echtzeit.

Open-Source-KI hat die künstliche Intelligenz zugänglicher gemacht, wobei Kafka die erforderliche Infrastruktur für die Verarbeitung von Daten in Echtzeit bereitstellt. Diese Einrichtung macht die Stapelverarbeitung überflüssig und ermöglicht Unternehmen die sofortige Verarbeitung von Daten, sobald diese anfallen.

Ein E-Commerce-Unternehmen könnte beispielsweise Kafka verwenden, um Kundeninteraktionen wie Klicks oder Produktansichten zu streamen, sobald sie stattfinden. Vortrainierte KI-Modelle verarbeiten diese Daten dann in Echtzeit und liefern personalisierte Empfehlungen oder gezielte Angebote. Kafka verwaltet den Datenfluss, während sich die KI-Modelle auf der Grundlage der eingehenden Daten anpassen und so die Interaktion mit Kunden verbessern.

Durch die Kombination von Echtzeit-Datenverarbeitung mit KI-Modellen können Unternehmen schnellere Entscheidungen bei der Betrugserkennung, der vorausschauenden Wartung oder der dynamischen Preisgestaltung treffen und so reaktionsschnellere und effizientere Systeme schaffen.

Vorteile von Apache Kafka

  • Echtzeit-Datenverarbeitung: Kafka ermöglicht Echtzeit-Datenpipelines und Streaming-Anwendungen. Es ermöglicht Systemen die Veröffentlichung, das Abonnieren und die Verarbeitung von Datenströmen in Echtzeit und unterstützt damit Anwendungsfälle wie Überwachung, Benachrichtigung und Analyse.
  • Hohe Leistung und Skalierbarkeit: Kafka-Themen sind so partitioniert und repliziert, dass sie skaliert werden können, um eine große Anzahl von gleichzeitigen Nutzern ohne Leistungseinbußen zu bedienen.
  •  Sicherheit und Compliance: Apache Kafka unterstützt die Verschlüsselung von Daten sowohl während der Übertragung als auch im Ruhezustand sowie konfigurierbare Zugriffskontrollen. Diese Funktionen helfen Unternehmen, vertrauliche Daten zu schützen und branchenspezifische Compliance-Standards einzuhalten.
  • Hohe Verfügbarkeit: Kafka gewährleistet hohe Verfügbarkeit durch Datenreplikation über mehrere Broker. Nachrichten bleiben auch dann verfügbar, wenn ein Knoten ausfällt, und das System läuft ohne Datenverlust oder Ausfallzeiten weiter.
  •  Vereinfachte Verwaltung: Kafka umfasst Überwachungs-, Konfigurations- und Automatisierungstools, die zur Verringerung der betrieblichen Belastung beitragen. Es lässt sich gut in Orchestrierungs- und Verwaltungsplattformen integrieren, wodurch die Bereitstellung und Skalierung leichter zu handhaben ist. Außerdem stellt Kafka über JMX (Java Management Extensions) detaillierte Leistungs- und Zustandsmetriken zur Verfügung, mit denen sich Durchsatz, Latenz, Broker-Zustand und Verzögerungen bei den Verbrauchern verfolgen lassen, was für eine effektive Überwachung und Kapazitätsplanung entscheidend ist.
  • Umfassende Integration: Mit einer breiten Palette von Konnektoren und Client-APIs lässt sich Kafka problemlos mit Datenbanken, Dateisystemen und Cloud-Services integrieren. Kafka Connect erleichtert beispielsweise den nahtlosen Datenaustausch zwischen Systemen, während Kafka Streams die Stream-Verarbeitung in Echtzeit ermöglicht und damit die Integrationsmöglichkeiten weiter verbessert.
Weiterführende Lösungen
IBM Event Streams

IBM® Event Streams ist eine Event-Streaming-Software, die auf der Open-Source-Software Apache Kafka basiert. Es ist als vollständig verwalteter Service in der IBM® Cloud oder zum Selbsthosten verfügbar.

Event Streams erkunden
Integrationssoftware und -lösungen

Erschließen Sie Ihr Geschäftspotenzial mit IBM Integrationslösungen, die Anwendungen und Systeme für den schnellen und sicheren Zugriff auf wichtige Daten verbinden.

Erkunden Sie Integrationslösungen
Cloud-Beratungsleistungen

Schalten Sie neue Funktionen frei und steigern Sie die geschäftliche Agilität mit IBM Cloud Consulting Services.

Erkunden Sie Cloud-Beratungsleistungen
Machen Sie den nächsten Schritt

IBM® Event Streams ist eine Event-Streaming-Software, die auf der Open-Source-Software Apache Kafka basiert. Es ist als vollständig verwalteter Service in der IBM® Cloud oder zum Selbsthosten verfügbar.

Event Streams erkunden Weitere Informationen erhalten