Apache Kafka (Kafka) ist eine verteilte Open-Source-Streaming-Plattform, die (unter anderem) die Entwicklung ereignisgesteuerter Echtzeitanwendungen ermöglicht. Was bedeutet das also?
Heutzutage erzeugen Milliarden von Datenquellen kontinuierlich Ströme von Datensätzen, einschließlich Ereignisströme. Ein Ereignis ist eine digitale Aufzeichnung einer Maßnahme und des Zeitpunkts, zu dem sie stattgefunden hat. Typischerweise ist ein Ereignis eine Maßnahme, die eine andere Maßnahme als Teil eines Prozesses auslöst. Ein Kunde, der eine Bestellung aufgibt, einen Flug reserviert oder ein Anmeldeformular ausfüllt, all das sind Beispiele für Ereignisse. An einem Ereignis muss keine Person beteiligt sein. Die Meldung eines angeschlossenen Thermostats über die Temperatur zu einem bestimmten Zeitpunkt ist beispielsweise auch ein Ereignis.
Diese Streams bieten Möglichkeiten für Anwendungen, die in Echtzeit auf Daten oder Ereignisse reagieren. Eine Streaming-Plattform ermöglicht es den Entwicklern, Anwendungen zu erstellen, die diese Ströme kontinuierlich und mit extrem hoher Geschwindigkeit verarbeiten, und zwar mit einem hohen Maß an Genauigkeit, das auf der richtigen Reihenfolge ihres Auftretens beruht.
LinkedIn entwickelte Kafka in 2011 als Nachrichtenbroker mit hohem Durchsatz für den eigenen Gebrauch und stellte Kafka dann der Apache Software Foundation zur Verfügung. (Link führt zu Seite außerhalb von ibm.com). Heute hat sich Kafka zur am weitesten verbreiteten Streaming-Plattform entwickelt, die in der Lage ist, Billionen von Datensätzen pro Tag aufzunehmen und zu verarbeiten. Dabei kommt es bei der Skalierung der Datenmengen zu keiner spürbaren Leistungsverzögerung. Fortune-500-Organisationen wie Target, Microsoft, AirBnB und Netflix vertrauen auf Kafka, um ihren Kunden datengesteuerte Echtzeit-Erlebnisse zu bieten.
Das folgende Video bietet weitere Informationen über Kafka (9:10):
Kafka hat drei primäre Leistungsspektren:
Entwickler können die Leistungsspektren von Kafka durch vier APIs nutzen:
Kafka ist eine verteilte Plattform. Sie wird als fehlertoleranter, hochverfügbarer Cluster ausgeführt, der mehrere Server und sogar mehrere Rechenzentren umfassen kann. Kafka-Abschnitte werden so partitioniert und repliziert, dass sie ohne Leistungseinbußen für eine große Anzahl simultaner Benutzer skaliert werden können. Laut Apache.org „wird Kafka die gleiche Leistung erbringen, unabhängig davon, ob Sie einen permanenten Speicher von 50 KB oder 50 TB auf dem Server haben“.
Kafka wird hauptsächlich zum Erstellen von zwei Arten von Anwendungen verwendet:
RabbitMQ ist ein sehr beliebter Open-Source-Nachrichtenbroker. Hierbei handelt es sich um eine Art Middleware, die es Anwendungen, Systemen und Services ermöglicht, miteinander zu kommunizieren, indem sie Nachrichtenübermittlungsprotokolle zwischen ihnen übersetzt.
Da Kafka als eine Art Nachrichtenbroker begann (und theoretisch 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. Die Vergleiche sind jedoch nicht wirklich praxisnah. Sie befassen sich oft mit technischen Details, die bei der Wahl zwischen den beiden Produkten nicht von Belang sind. Beispielsweise können Kafka-Abschnitte mehrere Abonnenten haben, während jede RabbitMQ-Nachricht nur einen haben kann. Kafka-Abschnitte sind permanent, während RabbitMQ-Nachrichten gelöscht werden, sobald sie konsumiert wurden.
Das Fazit lautet:
Kafka wird häufig zusammen mit verschiedenen anderen Apache-Technologien als Teil einer größeren Stream-Verarbeitung, einer ereignisgesteuerten Architektur oder einer Big-Data-Analyse-Lösung eingesetzt.
Apache Spark ist eine Analyseengine für umfangreiche Datenverarbeitung. Sie können Spark verwenden, um Analysen auf Streams durchzuführen, die von Apache Kafka geliefert werden, und um Echtzeit-Stream-Verarbeitungsanwendungen, wie die oben erwähnte Klick-Stream-Analyse, zu erstellen.
Apache NiFi ist ein Datenfluss-Managementsystem mit einer grafischen Drag-and-Drop-Schnittstelle. Da NiFi sowohl als Kafka-Produzent als auch als Kafka-Konsument eingesetzt werden kann, ist es ein ideales Tool zur Bewältigung von Datenflussproblemen, die Kafka nicht lösen kann.
Apache Flink ist eine Engine für die Durchführung von Berechnungen auf Ereignisströmen in großem Maßstab, mit gleichbleibend hoher Geschwindigkeit und geringer Latenzzeit. Flink kann Streams als Kafka-Konsument einpflegen, auf diesen Streams basierende Operationen in Echtzeit durchführen und die Ergebnisse in Kafka oder einer anderen Anwendung veröffentlichen.
Apache Hadoop ist ein verteiltes Software-Framework, mit dem Sie enorme Datenmengen in einem Cluster von Computern speichern können. Es eignet sich für Big Data-Analysen, maschinelles Lernen, Data-Mining und andere datengesteuerte Anwendungen, die strukturierte und unstrukturierte Daten verarbeiten. Kafka wird häufig verwendet, um eine Echtzeit-Pipeline für Datenströme zu einem Hadoop-Cluster zu erstellen.
Erstellen, modernisieren und verwalten Sie Anwendungen sicher und zuverlässig in jeder Cloud.
Von Ihren Geschäftsabläufen bis zum IT-Betrieb – die KI-basierte Automatisierung deckt alle Aspekte ab.
Verbinden von Anwendungen, Services und Daten mit IBM Cloud Pak for Integration, einer der umfassendsten Integrationsplattformen auf dem Markt.