Apache Kafka
Lernen Sie Apache Kafka kennen, die Open-Source-Streaming-Technologie, die hinter einigen der beliebtesten ereignisgesteuerten Echtzeit-Benutzererfahrungen, einschließlich AirBnB, Netflix und Pinterest, im Internet steht
Abstraktes Bild in Blau und Schwarz
Was ist Apache Kafka?

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):

So funktioniert Kafka

Kafka hat drei primäre Leistungsspektren:

  1. Es ermöglicht Anwendungen, Daten- oder Ereignisströme zu veröffentlichen oder zu abonnieren.
  2. Es speichert Aufzeichnungen genau (d. h. in der Reihenfolge, in der sie aufgetreten sind) auf eine fehlertolerante und permanente Weise.
  3. Es verarbeitet Datensätze in Echtzeit (sobald sie auftreten).

Entwickler können die Leistungsspektren von Kafka durch vier APIs nutzen:

  • Hersteller-API: Dies ermöglicht es einer Anwendung, einen Stream in einem Kafka-Abschnitt zu veröffentlichen. Ein Abschnitt ist ein benanntes Protokoll, in dem die Datensätze in der relativen Reihenfolge ihres Auftretens gespeichert werden. Nachdem ein Datensatz in einen Abschnitt geschrieben wurde, kann er nicht mehr geändert oder gelöscht werden. Stattdessen verbleibt er für einen vorkonfigurierten Zeitraum im Abschnitt, z. B. für zwei Tage, oder bis der Speicherplatz verbraucht ist.
  • Consumer API: Dies ermöglicht einer Anwendung, einen Abschnitt oder mehrere Abschnitte zu abonnieren und das im Abschnitt gespeicherte Streaming einzupflegen und zu verarbeiten. Es kann mit den Datensätzen des Abschnitts in Echtzeit arbeiten oder vergangene Datensätze einpflegen und verarbeiten.
  • Streams API: Sie baut auf den Producer- und Consumer-APIs auf und fügt komplexe Verarbeitungsleitungsspektren hinzu, die es einer Anwendung ermöglichen, eine kontinuierliche Front-to-Back-Stream-Verarbeitung durchzuführen. Dies geschieht speziell, um Datensätze aus einem oder mehreren Abschnitten zu konsumieren, sie nach Bedarf zu analysieren, zu aggregieren oder umzuwandeln und die resultierenden Datenströme in denselben oder anderen Abschnitten zu veröffentlichen. Während Producer- und Consumer-APIs für die einfache Stream-Verarbeitung verwendet werden können, ermöglicht die Streams API die Entwicklung von anspruchsvolleren Anwendungen für das Daten- und Ereignis-Streaming.
  • Connector API: Damit können Entwickler Connectors erstellen, d. h. wiederverwendbare Produzenten oder Konsumenten, die die Integration einer Datenquelle in einen Kafka-Cluster vereinfachen und automatisieren. Sehen Sie sich einige gebrauchsfertige Connectoren für beliebte Datenspeicher an (Link führt zu Seite außerhalb von ibm.com).
Leistung von Kafka

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“.

Kafkas Anwendungsfälle

Kafka wird hauptsächlich zum Erstellen von zwei Arten von Anwendungen verwendet:

  • Pipelines für Datenströme in Echtzeit: Hierbei handelt es sich um Anwendungen, die speziell dafür entwickelt wurden, viele Millionen von Daten oder Ereignisdatensätzen zwischen Unternehmenssystemen in großem Umfang und in Echtzeit zu übertragen. Die Übertragung ist zuverlässig, ohne dass das Risiko der Beschädigung, der Duplizierung von Daten und anderer Probleme besteht, die normalerweise bei der Übertragung solch großer Datenmengen mit hoher Geschwindigkeit auftreten.
  • Anwendungen für Streaming in Echtzeit: Anwendungen, die durch Datensatz- oder Ereignisströme gesteuert werden und eigene Ströme erzeugen. Wenn Sie ein wenig Zeit im Internet verbringen, werden Sie täglich mit einer Vielzahl dieser Anwendungen konfrontiert, von der Einzelhandelswebsite, die ständig die Menge eines Produkts in Ihrem örtlichen Ladengeschäft aktualisiert, bis hin zu Websites, die personalisierte Empfehlungen oder Werbung auf der Grundlage einer Klickprotokoll-Analyse anzeigen.
Kafka vs. RabbitMQ

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 ist eine Plattform für die Verarbeitung von Datenströmen, die es Anwendungen ermöglicht, große Mengen von Datensätzen schnell und permanent zu veröffentlichen, zu konsumieren und zu verarbeiten.
  • RabbitMQ ist ein Nachrichtenbroker, der es Anwendungen, die unterschiedliche Nachrichtenprotokolle verwenden, ermöglicht, sich gegenseitig Nachrichten zu senden und zu empfangen.
Häufig mit Kafka verwendete Apache-Technologien

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

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

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

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

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.

Relevante Lösungen
Anwendungsmodernisierung Services

Erstellen, modernisieren und verwalten Sie Anwendungen sicher und zuverlässig in jeder Cloud.

Beratungsleistungen zu Anwendungsmodernisierung erkunden
KI-basierte Automatisierung

Von Ihren Geschäftsabläufen bis zum IT-Betrieb – die KI-basierte Automatisierung deckt alle Aspekte ab.

KI-basierte Automatisierung kennenlernen
IBM Cloud Pak for Integration

Verbinden von Anwendungen, Services und Daten mit IBM Cloud Pak for Integration, einer der umfassendsten Integrationsplattformen auf dem Markt.

IBM Cloud Pak for Integration kennenlernen
Machen Sie den nächsten Schritt

Kafka wird Teil der Anwendungsmodernisierung bleiben, da sich die Anforderungen an bessere Kundenerlebnisse und mehr Anwendungen auf den Geschäfts- und IT-Betrieb auswirken. Wenn es darum geht, diese Anforderungen zu erfüllen, wird ein Wechsel zu mehr Automatisierung auch helfen. Durch die Zusammenarbeit mit IBM erhalten Sie Zugriff auf KI-gestützte Automatisierungsfunktionen, einschließlich vordefinierter Workflows, um die Innovation durch intelligentere Prozesse zu beschleunigen. Erfahren Sie mehr über IBM Event Streams for IBM Cloud, eine vollständig verwaltete Kafka-as-a-Service-Event-Streaming-Plattform, mit der Sie ereignisgesteuerte Anwendungen in der IBM Cloud erstellen können.

Weitere Informationen zu IBM Event Streams