Entdecken Sie Apache Kafka mit unserem Einsteigerhandbuch. Lernen Sie die Grundlagen, legen Sie los und entdecken Sie erweiterte Funktionen und praktische Anwendungen dieser leistungsstarken Event-Streaming-Plattform.
Die moderne Anwendungslandschaft wurde durch Microservices und ereignisbasierte Anwendungsarchitekturen vollständig verändert. Die Zeiten der Batch-basierten Verarbeitung sind längst vorbei. Um den Anforderungen an Geschwindigkeit und Verfügbarkeit gerecht zu werden, streben Entwickler eine nahezu reale Aktualität und eine vollständig entkoppelte Anwendungsarchitektur an.
Ein Ereignisverwaltungssystem wird normalerweise von entkoppelten Anwendungen verwendet, um die Integration zwischen verschiedenen Diensten zu erleichtern. Eine weitere Anwendung für einen Ereignisspeicher sind Event-Sourcing-basierte Architekturen, in denen die gesamte Anwendungslogik in Form von Ereignissen ausgedrückt wird. Hier kommt Apache Kafka ins Spiel.
Apache Kafka ist ein Open-Source-Framework für verteiltes Event-Streaming, das bei LinkedIn von einem Team entwickelt wurde, zu dem Jay Kreps, Jun Rao und Neha Narkhede gehörten. Das Tool wurde für die Aufnahme und Verarbeitung von Streaming-Daten in Echtzeit optimiert. Daher kann es zur Implementierung leistungsstarker Datenpipelines , Streaming-Analyseanwendungen und Datenintegrationsdienste verwendet werden.
Im Wesentlichen ist Kafka ein Framework für verteilte Ereignisspeicher und Stream-Verarbeitung, das als Nachrichtenbroker, Ereignisspeicher, Warteschlangenverwaltungssystem usw. verwendet werden kann.
Warum Kafka?
Nach der Speicherung der Ereignisse leitet die Event- Streaming- Plattform diese an die entsprechenden Dienste weiter. Entwickler können ein solches System skalieren und warten, ohne auf andere Dienste angewiesen zu sein. Da Kafka ein All-in-One-Paket ist, das als Nachrichtenbroker, Event-Store oder Stream-Processing-Framework verwendet werden kann, eignet es sich hervorragend für eine solche Anforderung.
Dank hohem Durchsatz und hoher Haltbarkeit können Hunderte von Datenquellen gleichzeitig riesige Zuflüsse kontinuierlicher Datenströme bereitstellen, die vom Message-Broker-System von Apache Kafka sequenziell und progressiv verarbeitet werden können.
Darüber hinaus bietet Apache Kafka folgende Vorteile:
Hoher Durchsatz
Dank der durchdachten Architektur von Kafka, die Datenpartitionierung, Batchverarbeitung, Zero-Copy-Techniken und Nur-Anhängen-Protokolle umfasst, kann Kafka einen hohen Durchsatz erreichen und Millionen von Nachrichten pro Sekunde verarbeiten. Dies ist für Szenarien mit hoher Geschwindigkeit und hohem Datenvolumen geeignet. Das leichtgewichtige Kommunikationsprotokoll, das eine effektive Interaktion zwischen Client und Broker ermöglicht, ermöglicht somit Echtzeit-Datenstreaming.
Skalierbarkeit
Apache Kafka ermöglicht Lastenausgleich zwischen Servern, indem ein Thema in mehrere Partitionen aufgeteilt wird. Dadurch können Benutzer Produktionscluster auf geografische Gebiete oder Verfügbarkeitszonen verteilen und sie je nach Bedarf vergrößern oder verkleinern. Mit anderen Worten: Apache Kafka kann problemlos vergrößert werden, um Billionen von Nachrichten pro Tag über eine große Anzahl von Partitionen hinweg zu verarbeiten.
Geringe Wartezeit
Apache Kafka verwendet einen Cluster von Servern mit geringer Latenz (bis zu 2 Millisekunden), um durch die Entkopplung von Datenströmen Nachrichten bei netzwerkbegrenztem Durchsatz effizient zu übermitteln.
Haltbarkeit und Zuverlässigkeit
Apache Kafka verbessert die Fehlertoleranz und Haltbarkeit von Daten auf zwei wichtige Arten:
- Es verteilt die Datenstromspeicherung in einem fehlertoleranten Cluster, um vor Serverausfällen zu schützen
- Es speichert Nachrichten auf der Festplatte und bietet eine Replikation innerhalb des Clusters.
Hohe Verfügbarkeit
Dank seiner clusterbasierten Broker bleibt Kafka auch bei einem Serverausfall betriebsbereit. Dies funktioniert, weil Kafka intelligent genug ist, um Abfragen an verschiedene Broker zu senden, wenn bei einem der Server Probleme auftreten.
Kernkomponenten von Kafka
Apache Kafka ermöglicht es Benutzern, Daten in Echtzeit zu analysieren, Datensätze in der Reihenfolge ihrer Erstellung zu speichern und sie zu veröffentlichen und zu abonnieren.
Apache Kafka ist ein horizontal skalierbarer Cluster aus Standardservern, der Echtzeitdaten von mehreren „Produzenten“-Systemen und -Anwendungen (z. B. Protokollierung, Überwachung, Sensoren und Internet-of-Things-Anwendungen) verarbeitet und diese mit sehr geringer Latenz mehreren „Konsumenten“-Systemen und -Anwendungen (z. B. Echtzeitanalysen) zur Verfügung stellt – wie im Diagramm oben dargestellt.
Beachten Sie, dass Anwendungen, die auf Echtzeit-Datenverarbeitung und Analysesysteme angewiesen sind, beide als Verbraucher betrachtet werden können. Beispielsweise eine Anwendung für standortbasiertes Mikromarketing oder Logistik.
Hier sind einige wichtige Begriffe, die Sie kennen sollten, um die Kernkomponenten von Kafka besser zu verstehen:
- Broker sind Server im Cluster, die Daten speichern und Clients bedienen.
- Themen sind Kategorien oder Feeds, in denen Datensätze veröffentlicht werden. Beachten Sie, dass es zwei Arten von Themen gibt: komprimierte und normale Themen. In komprimierten Themen gespeicherte Datensätze sind weder zeitlich noch räumlich begrenzt. Ältere Themennachrichten mit demselben Schlüssel werden durch neuere Nachrichten aktualisiert, und Apache Kafka entfernt die neueste Nachricht nur, wenn der Benutzer dies tut. Im Gegensatz dazu können in normalen Themen gespeicherte Datensätze so konfiguriert werden, dass sie ablaufen. Dadurch können veraltete Daten gelöscht werden, wodurch Speicherplatz freigegeben wird.
- Produzenten sind Client-Anwendungen, die Ereignisse in Kafka-Themen veröffentlichen (schreiben).
- Verbraucher sind Anwendungen, die Ereignisse aus Kafka-Themen lesen und verarbeiten. Dank der Streams-API für Apache Kafka können Java-Programme geschrieben werden, die Daten aus Themen abrufen und Ergebnisse an Apache Kafka zurückgeben. Externe Stream-Verarbeitungssysteme wie Apache Spark, Apache Apex, Apache Flink, Apache NiFi und Apache Storm können diese Nachrichtenströme ebenfalls verarbeiten.
- Kafka verwendet eine Client-Bibliothek namens „Streams“, um Mikrodienste und Anwendungen zu erstellen, in denen Daten zur Eingabe und Ausgabe in Clustern gespeichert werden.
Erste Schritte mit Kafka
Es wird oft empfohlen, Apache Kafka mit Zookeeper zu starten, um optimale Kompatibilität zu gewährleisten. Außerdem kann es bei der Installation von Kafka unter Windows zu einigen Problemen kommen, da es nicht nativ für die Verwendung mit diesem Betriebssystem konzipiert ist. Daher wird empfohlen, Apache Kafka unter Windows folgendermaßen zu starten:
- WSL2, wenn Sie Windows 10 oder höher verwenden, oder Docker
- Docker Wenn Sie Windows 8 oder früher verwenden
Es wird nicht empfohlen, Kafka unter Windows mit der JVM auszuführen, da diese einige der POSIX-Merkmale, die nur Linux eigen sind, nicht aufweist. Wenn Sie versuchen, Kafka unter Windows ohne WSL2 auszuführen, werden Sie irgendwann auf Schwierigkeiten stoßen.
Der erste Schritt zur Installation von Apache Kafka unter Windows ist die Installation von WSL2.
Schritt 1: WSL2 installieren
WSL2 oder Windows Subsystem for Linux 2 gibt Ihrem Windows-PC Zugriff auf eine Linux-Umgebung, ohne dass eine virtuelle Maschine erforderlich ist.
Die meisten Linux-Befehle sind mit WSL2 kompatibel, wodurch der Kafka-Installationsprozess den für Mac und Linux angebotenen Anweisungen näher kommt.
Tipp: Stellen Sie sicher, dass Sie Windows 10 Version 2004 oder höher (Build 19041 und höher) ausführen, bevor Sie WSL2 installieren. Drücken Sie die Windows-Logo-Taste + R, geben Sie „winver“ ein und klicken Sie dann auf „OK“, um Ihre Windows-Version anzuzeigen.
Am einfachsten installieren Sie das Windows-Subsystem für Linux (WSL), indem Sie den folgenden Befehl in einer Administrator-PowerShell oder einer Windows-Eingabeaufforderung ausführen und dann Ihren Computer neu starten:
Beachten Sie, dass Sie aufgefordert werden, ein Benutzerkonto und ein Kennwort für Ihre neu installierte Linux-Distribution zu erstellen.
Befolgen Sie die Schritte auf der Microsoft Docs -Website, wenn Sie nicht weiterkommen.
Schritt 2: Java installieren
Wenn Java nicht auf Ihrem Computer installiert ist, müssen Sie die neueste Version herunterladen .
Schritt 3: Apache Kafka installieren
Zum Zeitpunkt des Schreibens dieses Artikels ist die neueste stabile Version von Apache Kafka 3.7.0, veröffentlicht am 27. Februar 2024. Dies kann sich jederzeit ändern. Um sicherzustellen, dass Sie die aktuellste, stabilste Version von Kafka verwenden, sehen Sie sich die Download-Seite an .
Laden Sie die neueste Version aus den Binärdownloads herunter.
Sobald der Download abgeschlossen ist, navigieren Sie zu dem Ordner, in den Kafka heruntergeladen wurde, und extrahieren Sie alle Dateien aus dem komprimierten Ordner. Beachten Sie, dass wir unseren neuen Ordner „Kafka“ genannt haben.
Schritt 3: Zookeeper starten
Zookeeper wird für die Clusterverwaltung in Apache Kafka benötigt. Daher muss Zookeeper vor Kafka gestartet werden. Eine separate Installation von Zookeeper ist nicht erforderlich, da es Teil von Apache Kafka ist.
Öffnen Sie die Eingabeaufforderung und navigieren Sie zum Stammverzeichnis von Kafka. Führen Sie dort den folgenden Befehl aus, um Zookeeper zu starten:
.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
Start 4: Starten Sie den Kafka-Server
Öffnen Sie eine weitere Eingabeaufforderung und führen Sie den folgenden Befehl vom Stammverzeichnis von Apache Kafka aus, um Apache Kafka zu starten:
.\bin\windows\kafka-server-start.bat .\config\server.properties
Schritt 5: Thema erstellen
Um ein Thema zu erstellen, starten Sie eine neue Eingabeaufforderung im Stammverzeichnis von Kafka und führen Sie den folgenden Befehl aus:
.\bin\windows\kafka-topics.bat –create –topic MyFirstTopic –bootstrap-server localhost:9092
Dadurch wird ein neues Kafka-Thema mit dem Namen „MyFirstTopic“ erstellt.
Hinweis: Zur Bestätigung der korrekten Erstellung wird bei der Ausführung des Befehls „Create topic <name of topic>“ zurückgegeben.
Schritt 6: Kafka Producer starten
Um eine Nachricht in das Kafka-Thema einzufügen, muss ein Produzent gestartet werden. Führen Sie dazu den folgenden Befehl aus:
.\bin\windows\kafka-console-producer.bat –topic MyFirstTopic –bootstrap-server localhost:9092
Schritt 7: Kafka-Consumer starten
Öffnen Sie eine weitere Eingabeaufforderung vom Stammverzeichnis von Kafka aus und führen Sie den folgenden Befehl aus, um ihn an den Kafka-Consumer zu senden:
.\bin\windows\kafka-console-consumer.bat –topic MyFirstTopic –from-beginning –bootstrap-server localhost:9092
Wenn jetzt im Produzenten eine Nachricht erstellt wird, wird sie vom Konsumenten in Echtzeit gelesen.
Da haben Sie es … Sie haben gerade Ihr erstes Kafka-Thema erstellt.
Erweiterte Kafka-Funktionen
Hier sind einige erweiterte Funktionen von Kafka …
Kafka Streams
Mit Apache Kafka können Entwickler mithilfe von Kafka Streams robuste Stream-Processing-Anwendungen erstellen. Es bietet APIs und eine hochrangige domänenspezifische Sprache (DSL) zum Verarbeiten, Konvertieren und Auswerten kontinuierlicher Datenströme.
Zu den Hauptfunktionen gehören:
Stream-Verarbeitung
Die Echtzeitverarbeitung von Datensatzströmen wird durch Kafka Streams ermöglicht. Sie können damit Daten aus Kafka-Themen aufnehmen, verarbeiten und transformieren und die verarbeiteten Informationen dann an Kafka-Themen zurückgeben. Die Stream-Verarbeitung ermöglicht Analysen, Überwachung und Datenanreicherung nahezu in Echtzeit. Sie kann auf einzelne Aufzeichnungen oder auf fensterbasierte Aggregationen angewendet werden.
Ereigniszeitverarbeitung
Mithilfe der an die Datensätze angehängten Zeitstempel können Sie Datensätze außerhalb der Reihenfolge verarbeiten, indem Sie die Ereigniszeitverarbeitungsunterstützung von Kafka Streams nutzen. Es bietet semantische Fensteroperationen zur Ereigniszeit und ermöglicht so Fensterverknüpfungen, Sitzungen und zeitbasierte Aggregationen.
Zeitbasierte Operationen und Fensterung
Kafka Streams bietet eine Reihe von Fensteroperationen, die es Benutzern ermöglichen, Berechnungen über Sitzungsfenster, rollierende Fenster, gleitende Fenster und feste Zeitfenster durchzuführen.
Ereignisbasierte Trigger, zeitsensitive Analysen und zeitbasierte Aggregationen sind über Fensterprozeduren möglich.
Zustandsbehaftete Verarbeitung
Während der Stream-Verarbeitung ermöglicht Kafka Streams Benutzern, den Status beizubehalten und zu aktualisieren. Es wird integrierte Unterstützung für Statusspeicher bereitgestellt. Beachten Sie, dass ein Statusspeicher ein Schlüssel-Wert-Speicher ist, der innerhalb einer Verarbeitungstopologie aktualisiert und abgefragt werden kann.
Erweiterte Stream-Verarbeitungsfunktionen wie Verknüpfungen, Aggregationen und Anomalieerkennung werden durch zustandsbehaftete Operationen ermöglicht.
Exactly-Once-Verarbeitung
Kafka Streams bietet End-to-End-Semantik für die Exactly-Once-Verarbeitung und garantiert, dass jeder Datensatz genau einmal verarbeitet wird – selbst im Fehlerfall. Dies wird durch die Nutzung der robusten Haltbarkeitsgarantien und Transaktionsfunktionen von Kafka erreicht.
Kafka-Verbindung
Das deklarative, steckbare Datenintegrationsframework für Kafka heißt Kafka Connect. Es ist eine kostenlose Open-Source-Komponente von Apache Kafka, die als zentraler Daten-Hub für die einfache Datenintegration zwischen Dateisystemen, Datenbanken, Suchindizes und Schlüssel-Wert-Speichern fungiert.
Die Kafka-Distribution enthält standardmäßig Kafka Connect. Um es zu installieren, müssen Sie lediglich einen Worker-Prozess starten.
Verwenden Sie den folgenden Befehl aus dem Stammverzeichnis von Kafka, um den Kafka Connect-Arbeitsprozess zu starten:
.\bin\windows\connect-distributed.bat
.\config\connect-distributed.properties
Dadurch wird der Kafka Connect-Worker im verteilten Modus gestartet, was die hohe Verfügbarkeit und Skalierbarkeit beim Ausführen mehrerer Worker in einem Cluster ermöglicht.
Hinweis: Die .\config\connect-distributed.propertiesDatei gibt die Kafka-Broker-Informationen und andere Konfigurationseigenschaften für Kafka Connect an.
Konnektoren werden von Kafka Connect verwendet, um Daten zwischen externen Systemen und Kafka-Themen zu übertragen. Konnektoren können installiert und konfiguriert werden, um Ihren individuellen Anforderungen für die Datenintegration zu entsprechen.
.\config\connect-distributed.propertiesZum Installieren eines Connectors müssen Sie lediglich die Connector-JAR-Datei herunterladen und zum in der Datei angegebenen Verzeichnis plugin.path hinzufügen convolutional neural network 2.
Es muss eine Konfigurationsdatei für den Konnektor erstellt werden, in der die Konnektorklasse und alle anderen Eigenschaften angegeben werden müssen. Die Kafka Connect REST-API und Befehlszeilentools können zum Erstellen und Verwalten von Konnektoren verwendet werden.
Um Daten aus anderen Systemen zu kombinieren, müssen Sie als Nächstes den Kafka-Connector konfigurieren. Kafka Connect bietet verschiedene Konnektoren für die Integration von Daten aus verschiedenen Systemen, wie z. B. Dateisystemen, Nachrichtenwarteschlangen und Datenbanken. Wählen Sie einen Konnektor basierend auf Ihren Integrationsanforderungen aus – eine Liste der Konnektoren finden Sie in der Dokumentation .
Praktische Anwendungen von Kafka
Hier sind einige gängige Anwendungsfälle von Apache Kafka.
Aktivitätsverfolgung
Kafka kann von einer Online-E-Commerce-Plattform verwendet werden, um Benutzeraktivitäten in Echtzeit zu verfolgen. Jede Benutzeraktion, einschließlich Anzeigen von Produkten, Hinzufügen von Artikeln zu Einkaufswagen, Tätigen von Einkäufen, Hinterlassen von Bewertungen, Durchführen von Suchvorgängen usw., kann als Ereignis zu bestimmten Kafka-Themen veröffentlicht werden.
Andere Microservices können diese Ereignisse zur Echtzeit-Betrugserkennung, Berichterstattung, personalisierten Angeboten und Empfehlungen speichern oder verwenden.
Nachrichten
Mit seinem verbesserten Durchsatz, der integrierten Partitionierungs-, Replikations-, Fehlertoleranz- und Skalierungsfunktionalität ist Kafka ein guter Ersatz für herkömmliche Nachrichtenbroker.
Eine auf Mikroservices basierende Mitfahr-App kann damit den Nachrichtenaustausch zwischen verschiedenen Diensten erleichtern.
Beispielsweise könnte das Fahrdienstvermittlungsunternehmen Kafka verwenden, um mit dem Fahrervermittlungsdienst zu kommunizieren, wenn ein Fahrgast eine Reservierung vornimmt. Der Fahrervermittlungsdienst könnte dann nahezu in Echtzeit einen Fahrer in der Nähe ausfindig machen und mit einer Nachricht antworten.
Protokollaggregation
Normalerweise werden dabei physische Protokolldateien von Servern abgerufen und zur Verarbeitung an einem zentralen Ort gespeichert, beispielsweise einem Dateiserver oder einem Data Lake. Kafka abstrahiert die Daten als Nachrichtenstrom und filtert die dateispezifischen Informationen heraus. Dadurch können Daten mit reduzierter Latenz verarbeitet und verteilter Datennutzung und unterschiedlichen Datenquellen einfacher Rechnung getragen werden.
Nachdem die Protokolle in Kafka veröffentlicht wurden, können sie von einem Protokollanalysetool oder einem SIEM-System (Security Information and Event Management) zur Fehlerbehebung, Sicherheitsüberwachung und Compliance-Berichterstattung verwendet werden.
Stream-Verarbeitung
Mehrere Kafka-Benutzer verarbeiten Daten in mehrstufigen Verarbeitungspipelines. Rohe Eingabedaten werden aus Kafka-Themen entnommen, aggregiert, angereichert oder anderweitig in neue Themen zur weiteren Verwendung oder Verarbeitung umgewandelt.
Beispielsweise kann eine Bank Kafka verwenden, um Transaktionen in Echtzeit abzuwickeln. Jede Transaktion, die ein Kunde startet, wird dann als Ereignis in einem Kafka-Thema veröffentlicht. Anschließend kann eine Anwendung diese Ereignisse aufnehmen, die Transaktionen überprüfen und verarbeiten, zweifelhafte Transaktionen stoppen und Kundensalden sofort aktualisieren.
Metriken
Ein Cloud-Service-Provider könnte Kafka verwenden, um Statistiken aus verteilten Anwendungen zu aggregieren und so zentralisierte Echtzeit-Streams von Betriebsdaten zu generieren. Metriken von Hunderten von Servern, wie CPU- und Speicherverbrauch, Anzahl der Anfragen, Fehlerraten usw., könnten an Kafka gemeldet werden. Überwachungsanwendungen könnten diese Metriken dann zur Anomalieerkennung, Warnung und Echtzeitvisualisierung verwenden.
Fazit
Kafka ist ein Framework für die Datenstromverarbeitung, mit dem Anwendungen große Mengen von Datenströmen schnell und zuverlässig veröffentlichen, nutzen und verarbeiten können. Angesichts der zunehmenden Verbreitung von Echtzeit-Datenstreaming ist es zu einem unverzichtbaren Tool für Entwickler von Datenanwendungen geworden.
In diesem Artikel haben wir uns mit den Gründen für die Verwendung von Kafka, den Kernkomponenten, den ersten Schritten, erweiterten Funktionen und realen Anwendungen befasst. Um Ihr Wissen weiter zu vertiefen, lesen Sie: