Apache Kafka

Apache Kafka-Tutorial

Apache Kafka-Tutorial
In dieser Lektion werden wir sehen, wie wir Apache Kafka verwenden können und wofür es verwendet wird. Wir werden uns verschiedene damit verbundene Terminologien gründlich ansehen und beginnen, auch damit zu arbeiten.

Apache Kafka

Lassen Sie uns für eine High-Level-Definition eine kurze Definition für Apache Kafka präsentieren:

Apache Kafka ist ein verteiltes, fehlertolerantes, horizontal skalierbares Commit-Log.

Das waren einige hochrangige Worte über Apache Kafka. Lassen Sie uns die Konzepte hier im Detail verstehen.

Ein Thema in Apache Kafka ist wie eine Warteschlange, in der Nachrichten gespeichert werden. Diese Nachrichten werden für einen konfigurierbaren Zeitraum gespeichert und die Nachricht wird erst dann gelöscht, wenn diese Zeit erreicht ist, auch wenn sie von allen bekannten Verbrauchern konsumiert wurde.

Kafka ist skalierbar, da es die Verbraucher sind, die tatsächlich speichern, welche Nachricht von ihnen zuletzt als "Offset"-Wert abgerufen wurde. Schauen wir uns eine Abbildung an, um dies besser zu verstehen:

Themenaufteilung und Consumer-Offset in Apache Kafka

Erste Schritte mit Apache Kafka

Um Apache Kafka verwenden zu können, muss es auf dem Computer installiert sein. Lesen Sie dazu Apache Kafka unter Ubuntu installieren.

Stellen Sie sicher, dass Sie über eine aktive Kafka-Installation verfügen, wenn Sie Beispiele ausprobieren möchten, die wir später in der Lektion vorstellen.

Wie funktioniert es?

Mit Kafka, dem Produzent Anwendungen veröffentlichen Mitteilungen die bei einem Kafka . ankommt Knoten und nicht direkt an einen Verbraucher. Von diesem Kafka-Knoten werden Nachrichten von den Verbraucher Anwendungen.

Kafka Produzent und Konsument


Da ein einzelnes Thema viele Daten auf einmal erhalten kann, ist Kafka horizontal skalierbar, jedes Thema ist unterteilt in Partitionen und jede Partition kann auf jeder Knotenmaschine eines Clusters leben. Versuchen wir es vorzustellen:

Themenpartitionen


Auch hier zeichnet Kafka Broker nicht auf, welcher Verbraucher wie viele Datenpakete verbraucht hat. Es ist der Verantwortung des Verbrauchers, den Überblick über die von ihm verbrauchten Daten zu behalten.

Persistenz auf Festplatte

Kafka behält die Nachrichtenaufzeichnungen, die er von den Produzenten erhält, auf der Festplatte und behält sie nicht im Speicher. Eine Frage, die sich stellen könnte, ist, wie dies machbar und schnell ist? Dafür gab es mehrere Gründe, die es zu einer optimalen Art der Verwaltung der Nachrichtensätze machen:

Datenverteilung und -replikation

Wie wir oben gesehen haben, dass ein Thema in Partitionen unterteilt ist, wird jeder Nachrichtendatensatz auf mehreren Knoten des Clusters repliziert, um die Reihenfolge und die Daten jedes Datensatzes beizubehalten, falls einer der Knoten stirbt.

Auch wenn eine Partition auf mehreren Knoten repliziert wird, gibt es immer noch Partitionsführer Knoten, über den Anwendungen Daten zum Thema lesen und schreiben, und der Leiter repliziert Daten auf anderen Knoten, die als bezeichnet werden Anhänger dieser Partition.

Wenn die Meldedatensatzdaten für eine Anwendung sehr wichtig sind, kann die Gewährleistung der Sicherheit des Meldedatensatzes in einem der Knoten erhöht werden, indem die Replikationsfaktor des Clusters.

Was ist Zookeeper??

Zookeeper ist ein sehr fehlertoleranter, verteilter Schlüsselwertspeichervalue. Apache Kafka hängt stark von Zookeeper ab, um Cluster-Mechaniken wie den Heartbeat zu speichern, Updates/Konfigurationen zu verteilen usw.).

Es ermöglicht den Kafka-Brokern, sich selbst zu abonnieren und zu wissen, wann immer eine Änderung bezüglich eines Partitionsführers und einer Knotenverteilung stattgefunden hat.

Hersteller- und Verbraucheranwendungen kommunizieren direkt mit Zookeeper Anwendung, um zu wissen, welcher Knoten der Partitionsführer für ein Thema ist, damit sie Lese- und Schreibvorgänge vom Partitionsführer ausführen kann.

Streaming

Ein Stream-Prozessor ist eine Hauptkomponente in einem Kafka-Cluster, der einen kontinuierlichen Strom von Nachrichtendatensatzdaten von Eingabethemen nimmt, diese Daten verarbeitet und einen Datenstrom zu Ausgabethemen erstellt, der alles sein kann, vom Papierkorb bis zu einer Datenbank.

Es ist durchaus möglich, eine einfache Verarbeitung direkt mit den Producer/Consumer-APIs durchzuführen, obwohl Kafka für komplexe Verarbeitungen wie das Kombinieren von Streams eine integrierte Streams-API-Bibliothek bereitstellt. Läuft nicht auf einem Broker. Es funktioniert ähnlich wie die Verbraucher-API und hilft uns, die Stream-Verarbeitungsarbeit über mehrere Anwendungen hinweg zu skalieren.

Wann sollte Apache Kafka verwendet werden??

Wie wir in den obigen Abschnitten untersucht haben, kann Apache Kafka verwendet werden, um mit einer großen Anzahl von Nachrichtendatensätzen umzugehen, die zu einer praktisch unendlichen Anzahl von Themen in unseren Systemen gehören können.

Apache Kafka ist ein idealer Kandidat, wenn es um die Nutzung eines Dienstes geht, der es uns ermöglicht, die ereignisgesteuerte Architektur in unseren Anwendungen zu verfolgen. Dies liegt an seinen Fähigkeiten der Datenpersistenz, der fehlertoleranten und stark verteilten Architektur, bei der sich kritische Anwendungen auf ihre Leistung verlassen können.

Die skalierbare und verteilte Architektur von Kafka macht die Integration mit Microservices sehr einfach und ermöglicht es einer Anwendung, sich von viel Geschäftslogik zu entkoppeln.

Erstellen eines neuen Themas

Wir können ein Testthema erstellen testen auf dem Apache Kafka-Server mit dem folgenden Befehl:

Ein Thema erstellen

sudo kafka-themen.sh --create --zookeeper localhost:2181 --replication-factor 1
--Partitionen 1 --topic testing

Folgendes erhalten wir mit diesem Befehl zurück:

Neues Kafka-Thema erstellen


Es wird ein Testthema erstellt, das wir mit dem genannten Befehl bestätigen können:

Kafka Topic-Erstellungsbestätigung

Nachrichten zu einem Thema schreiben Top

Wie wir bereits untersucht haben, ist eine der in Apache Kafka vorhandenen APIs die Hersteller-API. Wir verwenden diese API, um eine neue Nachricht zu erstellen und zu dem gerade erstellten Thema zu veröffentlichen:

Nachricht zum Thema schreiben

sudo kafka-console-producer.sh --broker-list localhost:9092 --topic testing

Sehen wir uns die Ausgabe für diesen Befehl an:

Nachricht an Kafka Topic veröffentlichen


Sobald wir die Taste drücken, sehen wir ein neues Pfeilzeichen (>), was bedeutet, dass wir jetzt Daten eingeben können:

Eine Nachricht eingeben


Geben Sie einfach etwas ein und drücken Sie , um eine neue Zeile zu beginnen. Ich habe 3 Textzeilen eingegeben:

Nachrichten aus dem Thema lesen

Nachdem wir nun eine Nachricht zu dem von uns erstellten Kafka-Thema veröffentlicht haben, wird diese Nachricht für einige konfigurierbare Zeit da sein. Wir können es jetzt mit dem lesen Verbraucher-API:

Nachrichten aus dem Thema lesen

sudo kafka-console-consumer.sh --zookeeper localhost:2181 --
Thementests --von Anfang an

Folgendes erhalten wir mit diesem Befehl zurück:

Befehl zum Lesen der Nachricht von Kafka Topic


Wir können die Nachrichten oder Zeilen sehen, die wir mit der Producer API geschrieben haben, wie unten gezeigt:

Wenn wir über die Producer API eine weitere neue Nachricht schreiben, wird diese auch sofort auf der Consumer-Seite angezeigt:

Gleichzeitig veröffentlichen und konsumieren

Fazit

In dieser Lektion haben wir uns angesehen, wie wir Apache Kafka verwenden, der ein ausgezeichneter Message Broker ist und auch als spezielle Datenpersistenzeinheit fungieren kann.

Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...
Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...
So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...