Apache Kafka Tutorial

Apache Kafka Tutorial
In dieser Lektion werden wir sehen, wie wir Apache Kafka verwenden können und wie es verwendet wird. Wir werden uns verschiedene Terminologien, die damit verbunden sind, gründlich ansehen und auch damit beginnen.

Apache Kafka

Für eine Definition auf hoher Ebene stellen wir eine kurze Definition für Apache Kafka vor:

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

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

  • Verteilt: Kafka unterteilt die Daten, die sie enthält, in mehrere Server, und jede dieser Server kann Anforderungen von Clients für die Anteilsangebot der von ihnen enthält Daten bearbeiten
  • Fehlertoleranz: Kafka hat keinen einzigen Fehlerpunkt. In einem Spof -System wie einer MySQL -Datenbank ist die Anwendung verschraubt. In einem System, das keinen FoF hat und aus Multiuple -Knoten besteht.
  • Horizontal skalierbar: Diese Art von Scailing bezieht sich auf das Hinzufügen weiterer Maschinen in den vorhandenen Cluster. Dies bedeutet, dass Apache Kafka in der Lage ist, mehr Knoten in seinem Cluster zu akzeptieren und keine Ausfallzeit für erforderliche Upgrades für das System zu liefern. Schauen Sie sich das Bild unten an, um die Art von Scailing -Konzepten zu verstehen:
  • Vertikales und horizontales Scailing

  • Log eingehen: Ein Commit -Protokoll ist eine Datenstruktur wie eine verknüpfte Liste. Es hält alle Nachrichten an und behält immer ihre Bestellung bei. Daten können erst dann aus diesem Protokoll gelöscht werden, wenn eine bestimmte Zeit für diese Daten erreicht ist.

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

Kafka ist skalierbar, da die Verbraucher tatsächlich gespeichert sind, welche Botschaft von ihnen als "Offset" -Werte abgerufen wurde. Schauen wir uns eine Figur an, um dies besser zu verstehen:

Topic -Parion und Verbraucher offset in Apache Kafka

Erste Schritte mit Apache Kafka

Um Apache Kafka zu verwenden, muss es auf dem Computer installiert werden. Lassen Sie dazu Apache Kafka auf Ubuntu lesen.

Stellen Sie sicher.

Wie funktioniert es?

Mit Kafka die Hersteller Bewerbungen veröffentlicht Mitteilungen das kommt in einem Kafka an Knoten und nicht direkt an einen Verbraucher. Aus diesem Kafka -Knoten werden Nachrichten von der verbraucht Verbraucher Anwendungen.

Kafka -Produzent und Verbraucher


Da ein einzelnes Thema viele Daten auf einmal erhalten kann, um Kafka horizontal skalierbar zu halten, ist jedes Thema unterteilt Partitionen und jede Partition kann auf jeder Knotenmaschine eines Clusters leben. Lassen Sie uns versuchen, es zu präsentieren:

Themenpartitionen


Auch hier hält der Kafka -Broker keine Aufzeichnungen darüber, welcher Verbraucher wie viele Datenpakete konsumiert hat. Es ist der Verbraucher verantwortlich, Daten zu verfolgen, die sie konsumiert haben.

Ausdauer der Festplatte

Kafka bestt. Eine Frage, die auftreten könnte, ist, wie dies die Dinge realisierbar und schnell macht? Dafür gab es mehrere Gründe, was es zu einer optimalen Art der Verwaltung der Nachrichtendatensätze macht:

  • Kafka folgt einem Protokoll der Gruppierung der Nachrichtenunterlagen. Die Hersteller produzieren Botschaften, die in großen Stücken auf der Festplatte bestehen bleiben, und die Verbraucher konsumieren diese Nachrichtenaufzeichnungen auch in großen linearen Stücken.
  • Der Grund, warum die Festplatte schreibt.
  • Lineare Festplattenoperationen werden durch optimiert Betriebssysteme auch durch Verwendung von Techniken von Schreiben Sie Und lesen Sie weiter.
  • Das moderne Betriebssystem nutzt auch das Konzept von PageCaching Das bedeutet, dass sie einige Festplattendaten in kostenlosen verfügbaren RAM zwischenspeichern.
  • Da Kafka Daten in einem einheitlichen Standarddaten im gesamten Fluss des Herstellers bis zum Verbraucher bestehen bleibt, nutzt es die Optimierung von Nullkopie Verfahren.

Datenverteilung und Replikation

Wie wir oben untersucht 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 zu verwalten, wenn einer der Knoten stirbt.

Auch wenn eine Partition auf mehreren Knoten repliziert wird, gibt es immer noch a Partitionsleiter Knoten, durch den Anwendungen Daten zum Thema lesen und schreiben, und der Anführer repliziert Daten zu anderen Knoten, die als als als als bezeichnete als Anhänger dieser Partition.

Wenn die Datensatzdaten für eine Anwendung von großer Bedeutung sind, kann die Garantie des Nachrichtenaufzeichnungen in einem der Knoten durch Erhöhen des Erhöhen der Knoten erhöht werden Replikationsfaktor des Clusters.

Was ist Zookeeper??

Zookeeper ist ein sehr fehlertoleranter, verteilter Schlüsselwertgeschäft. Apache Kafka hängt stark von Zookeeper ab, um Clustermechaniken wie den Herzschlag zu speichern, Aktualisierungen/Konfigurationen zu verteilen usw.).

Es ermöglicht den Kafka -Brokern, sich selbst zu abonnieren und zu wissen, wann immer eine Änderung in Bezug auf einen Partitionsleiter und eine Knotenverteilung stattgefunden hat.

Produzent und Verbraucheranwendungen kommunizieren direkt mit Zookeeper Anwendung, um zu wissen, welcher Knoten der Partitionsleiter für ein Thema ist, damit er Lese- und Schreibvorgänge des Partitionsleiters ausführen kann.

Streaming

Ein Stream -Prozessor ist eine Hauptkomponente in einem KAFKA -Cluster, der einen kontinuierlichen Strom von Nachrichtenaufzeichnungsdaten aus Eingabethemen annimmt, diese Daten verarbeitet und einen Datenstrom erstellt, um Themen auszugeben, die alles sein können, von Müll bis zu einer Datenbank.

Es ist durchaus möglich, eine einfache Verarbeitung mit der Produzenten-/Verbraucher -APIs direkt durchzuführen. Für komplexe Verarbeitung wie das Kombinieren von Streams bietet Kafka jedoch eine integrierte API -Bibliothek integrierte Streams. Bitte beachten Sie, dass diese API in unserer eigenen Codebasis verwendet werden soll und nicht ' Ich renne auf einem Broker. Es funktioniert ähnlich der Verbraucher -API und hilft uns, die Stream -Verarbeitungsarbeit über mehrere Anwendungen zu skalieren.

Wann soll Apache Kafka verwendet werden?

Wie wir in den obigen Abschnitten untersucht haben, kann Apache Kafka verwendet werden, um eine große Anzahl von Nachrichtenaufzeichnungen zu bewältigen, die zu einer praktisch unendlichen Anzahl von Themen in unseren Systemen gehören können.

Apache Kafka ist ein idealer Kandidat bei der Verwendung eines Dienstes, mit dem wir die ereignisgesteuerte Architektur in unseren Anwendungen befolgen können. Dies ist auf die Funktionen der Datenpersistenz, der fehlertoleranten und hochverteilten Architektur zurückzuführen, bei denen kritische Anwendungen auf ihre Leistung stützen können.

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

Erstellen eines neuen Themas

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

Kreatinig ein Thema

Sudo Kafka-Topics.sh-create-Zookeeper localhost: 2181-Replikationsfaktor 1
--Partitionen 1 -topische Tests

Hier ist, was wir mit diesem Befehl zurückbekommen:

Erstellen Sie ein neues Kafka -Thema


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

KAFKA -Topic -Erstellung Bestätigung

Nachrichten zu einem Thema schreiben

Wie wir bereits studiert haben, ist eine der in Apache Kafka vorhandenen APIs die Produzentapi. Wir werden diese API verwenden, um eine neue Nachricht zu erstellen und zu dem Thema zu veröffentlichen, das wir gerade erstellt haben:

Nachricht zum Thema schreiben

Sudo Kafka-Console-Produzent.SH-BROKER-LIST LOCALHOST: 9092--Topische Tests

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

Veröffentlichen Sie die Nachricht an Kafka -Thema


Sobald wir die Taste gedrückt haben, werden wir ein neues Pfeil (>) Zeichen sehen, was bedeutet, dass wir jetzt Daten angeben können:

Meldung eingeben


Geben Sie einfach etwas ein und drücken Sie, um eine neue Linie zu starten. Ich tippte 3 Zeilen von Texten ein:

Lesen von Nachrichten aus dem Thema

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

Lesen von Nachrichten aus dem Thema

Sudo Kafka-Console-Consumer.SH -Zookeeper Localhost: 2181 --
Thementests-From-Beinging

Hier ist, was wir mit diesem Befehl zurückbekommen:

Befehl zum Lesen der Nachricht vom Kafka -Thema


Wir können die Nachrichten oder Zeilen sehen, die wir mit der unten gezeigten Produzenten -API geschrieben haben:

Wenn wir eine weitere neue Nachricht mit der Produzenten -API schreiben, wird sie auch sofort auf der Verbraucherseite angezeigt:

Gleichzeitig veröffentlichen und konsumieren

Abschluss

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