Apache Kafka

Was ist Apache Kafka und wie funktioniert es?

Was ist Apache Kafka und wie funktioniert es?

In dieser Lektion werden wir sehen, was Apache Kafka ist und wie es zusammen mit seinen häufigsten Anwendungsfällen funktioniert.  Apache Kafka wurde ursprünglich 2010 bei LinkedIn entwickelt und wurde 2012 zu einem Apache-Projekt auf höchster Ebene. Es hat drei Hauptkomponenten:

Wir werden in den kommenden Abschnitten noch viel mehr Kafka-Konzepte studieren. Lass uns vorangehen.

Apache Kafka-Konzepte

Bevor wir tiefer graben, müssen wir uns mit einigen Konzepten in Apache Kafka auseinandersetzen. Hier sind die Begriffe, die wir kennen sollten, ganz kurz:

Themenpartitionen

Das Konzept für Topic, Topic Partitions und Offset lässt sich auch mit einer anschaulichen Abbildung verdeutlichen:

Themenaufteilung und Consumer-Offset in Apache Kafka

Apache Kafka als Publish-Subscribe-Messaging-System

Bei Kafka veröffentlichen die Producer-Anwendungen Nachrichten, die an einem Kafka-Knoten und nicht direkt an einem Verbraucher ankommen. Von diesem Kafka-Knoten werden Nachrichten von den Verbraucheranwendungen konsumiert.

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.

Auch hier führt Kafka Broker keine Aufzeichnungen darüber, welcher Verbraucher wie viele Datenpakete verbraucht hat. Es ist der Verantwortung des Verbrauchers, den Überblick über die von ihm verbrauchten Daten zu behalten. Da Kafka die Bestätigungen und Nachrichten jeder Verbraucheranwendung nicht nachverfolgt, kann es viel mehr Verbraucher mit vernachlässigbaren Auswirkungen auf den Durchsatz verwalten. In der Produktion folgen viele Anwendungen sogar einem Muster von Batch-Consumern, was bedeutet, dass ein Consumer alle Nachrichten in einer Warteschlange in regelmäßigen Zeitabständen konsumiert.

Installation

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

Anwendungsfall: Tracking der Website-Nutzung

Kafka ist ein hervorragendes Tool, wenn wir die Aktivität auf einer Website verfolgen müssen. Die Tracking-Daten umfassen unter anderem Seitenaufrufe, Suchen, Uploads oder andere Aktionen, die Benutzer ausführen können. Wenn sich ein Benutzer auf einer Website befindet, kann der Benutzer beim Surfen durch die Website eine Reihe von Aktionen ausführen.

Wenn sich beispielsweise ein neuer Benutzer auf einer Website anmeldet, kann die Aktivität verfolgt werden, in welcher Reihenfolge ein neuer Benutzer die Funktionen einer Website erkundet, wenn der Benutzer sein Profil nach Bedarf einstellt oder es vorzieht, direkt auf die Funktionen der Website zuzugreifen Webseite. Immer wenn der Benutzer auf eine Schaltfläche klickt, werden die Metadaten für diese Schaltfläche in einem Datenpaket gesammelt und an den Kafka-Cluster gesendet, von wo aus der Analysedienst für die Anwendung diese Daten sammeln und nützliche Einblicke in die zugehörigen Daten liefern kann. Wenn wir die Aufgaben in Schritte unterteilen möchten, sieht der Prozess wie folgt aus:

  1. Ein Benutzer registriert sich auf einer Website und betritt das Dashboard. Der Benutzer versucht sofort auf eine Funktion zuzugreifen, indem er mit einer Schaltfläche interagiert.
  2. Die Webanwendung erstellt eine Nachricht mit diesen Metadaten zu einer Themenpartition des Themas „Klick“.
  3. Die Nachricht wird an das Commit-Protokoll angehängt und der Offset wird erhöht
  4. Der Verbraucher kann jetzt die Nachricht vom Kafka-Broker abrufen und die Website-Nutzung in Echtzeit anzeigen und vergangene Daten anzeigen, wenn er seinen Offset auf einen möglichen früheren Wert zurücksetzt

Anwendungsfall: Nachrichtenwarteschlange

Apache Kafka ist ein hervorragendes Tool, das als Ersatz für Message-Broker-Tools wie RabbitMQ fungieren kann. Asynchrones Messaging hilft bei der Entkopplung der Anwendungen und schafft ein hochskalierbares System.

Genau wie beim Konzept von Microservices können wir, anstatt eine große Anwendung zu erstellen, die Anwendung in mehrere Teile aufteilen und jeder Teil hat eine ganz spezifische Verantwortung. Auf diese Weise können die verschiedenen Teile auch in völlig unabhängigen Programmiersprachen geschrieben werden! Kafka verfügt über ein integriertes Partitionierungs-, Replikations- und Fehlertoleranzsystem, das es zu einem großen Message-Broker-System macht.

In letzter Zeit wird Kafka auch als eine sehr gute Lösung für die Protokollsammlung angesehen, die den Server-Broker für die Protokolldateisammlung verwalten und diese Dateien einem zentralen System zur Verfügung stellen kann. Mit Kafka ist es möglich, jedes Ereignis zu generieren, von dem jeder andere Teil Ihrer Anwendung wissen möchte.

Verwendung von Kafka bei LinkedIn

Es ist interessant festzustellen, dass Apache Kafka früher als Möglichkeit gesehen und verwendet wurde, Datenpipelines konsistent zu machen und Daten in Hadoop aufzunehmen. Kafka funktionierte hervorragend, wenn mehrere Datenquellen und -ziele vorhanden waren und ein separater Pipeline-Prozess für jede Kombination von Quelle und Ziel nicht möglich war. Der Kafka-Architekt von LinkedIn, Jay Kreps, beschreibt dieses bekannte Problem in einem Blogbeitrag gut:

Meine eigene Beteiligung daran begann etwa 2008, nachdem wir unseren Key-Value-Store ausgeliefert hatten. Mein nächstes Projekt bestand darin, zu versuchen, ein funktionierendes Hadoop-Setup zum Laufen zu bringen und einige unserer Empfehlungsprozesse dorthin zu verlegen. Da wir in diesem Bereich wenig Erfahrung haben, haben wir natürlich ein paar Wochen für das Ein- und Auslesen von Daten eingeplant und den Rest unserer Zeit für die Implementierung ausgefallener Vorhersagealgorithmen. So begann ein langer Slog.

Apache Kafka und Flume

Wenn Sie diese beiden anhand ihrer Funktionen vergleichen, werden Sie viele Gemeinsamkeiten finden. Hier sind einige davon:

Fazit

In dieser Lektion haben wir uns viele Konzepte zu Apache Kafka angesehen. Lesen Sie hier mehr auf Kafka basierende Beiträge.

So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...