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.
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.
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:
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.
Entwickler können die Funktionen von Kafka über vier primäre Programmierschnittstellen (APIs) nutzen:
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.
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.
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.
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.
Entwickler verwenden Kafka hauptsächlich für die Erstellung von zwei Arten von Anwendungen:
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.
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.
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 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 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 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 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 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 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.
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.
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.
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.
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.
Schalten Sie neue Funktionen frei und steigern Sie die geschäftliche Agilität mit IBM Cloud Consulting Services.