Einführung in die Kafka Consumer Group
Die Kafka-Verbrauchergruppe besteht im Wesentlichen aus einer Reihe von Kafka-Verbrauchern, die parallel Daten aus einem Kafka-Thema lesen können. Eine Kafka Consumer Group hat folgende Eigenschaften:
- Alle Verbraucher in einer Gruppe haben dieselbe group.id.
- Jede Partition im Thema wird nur von einem Consumer gelesen.
- Die maximale Anzahl der Verbraucher entspricht der Anzahl der Partitionen im Thema. Wenn es mehr Konsumenten als Partitionen gibt, bleiben einige der Konsumenten untätig.
- Ein Consumer kann von mehr als einer Partition lesen.
Bedeutung der Kafka Consumer Group
Für eine Einzelhandelsorganisation wird es eine große Anzahl von Produzenten geben, die Daten mit großer Geschwindigkeit erzeugen. Um eine große Datenmenge lesen zu können, müssen mehrere Consumer gleichzeitig ausgeführt werden. Auf der Produzentenseite ist es vergleichsweise einfacher, wenn jeder Produzent unabhängig von den anderen Daten generiert. Auf der Verbraucherseite besteht jedoch eine hohe Wahrscheinlichkeit, dass jede Nachricht mehr als einmal gelesen wird, wenn mehr als ein Verbraucher das gleiche Thema liest. Kafka löst dieses Problem mit Consumer Group. In jedem Fall darf nur ein Verbraucher Daten von einer Partition lesen.
Trennwände der Kafka Consumer Group
Nehmen wir an, wir haben ein Kafka-Thema und es gibt 4 Partitionen darin. Dann können wir folgende Szenarien haben:
1. Anzahl der Verbraucher = Anzahl der Partitionen
In diesem Fall liest jeder Consumer Daten von jeder Partition und dies ist der ideale Fall.
2. Anzahl der Verbraucher> Anzahl der Partitionen
In diesem Fall bleibt ein Verbraucher untätig und führt zu einer schlechten Nutzung der Ressource.
3. Anzahl der Verbraucher <Anzahl der Partitionen
In diesem Fall liest einer der Konsumenten Daten von mehr als einer Partition.
4. Anzahl der Verbrauchergruppen> 1
In diesem Fall wird das Thema von mehr als einer Verbrauchergruppe abonniert, die zwei verschiedene Anwendungen bedient. Die beiden Anwendungen können unabhängig voneinander ausgeführt werden.
Vorteile der Kafka Consumer Group
Consumer Group bietet folgende Vorteile:
- Skalierbarkeit: Eine Reihe von Verbrauchern, die Daten parallel lesen, erhöht definitiv die Datenverbrauchsrate und macht das System in der Lage, ein hohes Datenvolumen zu lesen.
- Fehlertoleranz: Angenommen, wir hatten nur einen Verbraucher (zum Lesen eines nicht so großen Datenvolumens). Was würde passieren, wenn der Verbraucher aus irgendeinem Grund ausfällt? Die gesamte Pipeline wird brechen.
- Lastenausgleich: Kafka teilt die Partitionen auf faire Weise mit jedem Konsumenten, wodurch der Prozess des Datenverbrauchs reibungslos und effizient wird.
- Rebalancing: Wenn ein neuer Consumer hinzugefügt wird oder ein vorhandener Consumer stoppt, gleicht Kafka die Last der verfügbaren Consumer neu aus.
Wie verbindet Kafka die beiden Modelle?
Lassen Sie uns zuerst die beiden Messaging-Modelle diskutieren.
1. Message Queues
In diesem Modell wird ein Nachrichtenstrom von einem Produzenten an nur einen Konsumenten gesendet. Somit ist jede Nachricht einmal schreibgeschützt, und sobald ein Verbraucher eine Nachricht abruft, wird die Nachricht aus der Warteschlange gelöscht. Ein typisches Beispiel ist die Ausstellung eines Gehaltsschecks, bei dem jeder Gehaltsscheck nur einmal ausgestellt werden muss. Dieses Modell stellt auch nicht sicher, dass Nachrichten in der richtigen Reihenfolge zugestellt werden. Die Skalierbarkeit der Nachrichtenverarbeitung ist auf eine einzelne Domäne beschränkt.
2. Publish-Subscribe-Messaging
In diesem Modell können die von einem Produzenten veröffentlichten Nachrichten von mehr als einem Konsumenten abonniert werden. Der Produzent und der Konsument sind weitgehend entkoppelt. Dieses Modell stellt sicher, dass jeder Konsument Nachrichten zu einem Thema in der genauen Reihenfolge erhält, in der sie vom Produzenten generiert wurden. Ein typisches Beispiel kann ein Fernsehgerät sein, das verschiedene Kanäle wie Musik, Film, Sport usw. veröffentlicht, und die Verbraucher können mehr als einen Kanal abonnieren. Da es mehrere Abonnenten für ein Thema gibt, ist die Skalierung der Stream-Verarbeitung eine Herausforderung.
Kafka ist so beliebt, weil es, obwohl es auf dem Publish-Subscribe-Modell basiert, die Vorteile eines Messaging-Warteschlangensystems aufweist. Wie bereits erwähnt, stellt Kafka bei einer Consumer-Gruppe sicher, dass jede Nachricht in einem Thema von einem Consumer (ähnlich einem Message Queue-System) nur einmal gelesen werden kann. Die zusätzlichen Vorteile bestehen darin, dass die Nachrichten von den Brokern aufbewahrt werden (wodurch sie für einige Zeit fehlertolerant werden). Wenn wir mehr als eine Verbrauchergruppe haben, können sie Nachrichten aus demselben Thema lesen, sie jedoch unterschiedlich verarbeiten.
Anwendungsfall-Implikation
Nehmen wir an, wir haben eine einfache Cloud-Plattform, auf der wir Benutzern die folgenden Vorgänge erlauben:
- Speichern Sie Dateien in der Cloud.
- Zeigen Sie ihre Dateien in der Cloud an.
- Laden Sie ihre Dateien aus der Cloud herunter.
Am Anfang hatten wir eine sehr kleine Benutzerbasis. Wir wollten verschiedene Statistiken (auf Stundenbasis) ableiten, wie aktive Benutzer, Anzahl der Upload-Anfragen, Anzahl der Download-Anfragen und so weiter. Um die Anforderungen zu erfüllen, haben wir einen Kafka-Cluster eingerichtet, der die (von unserer Anwendung generierten) Protokolle zu einem Thema erstellt. Es gibt eine Anwendung, die das Thema (unter Verwendung eines Verbrauchers) verarbeitet, um die erforderlichen Statistiken zu generieren und schließlich anzuzeigen die auf einer Webseite.
Als die Leute anfingen, unsere Dienste zu mögen, begannen immer mehr Leute, sie zu nutzen, wodurch viele Protokolle pro Stunde erstellt wurden. Wir stellten fest, dass die Anwendung, die das Thema verwendet, extrem langsam wurde, da wir nur einen Consumer verwendeten. Um das Problem zu lösen, haben wir einige Verbraucher in die Gruppe aufgenommen und eine signifikante Verbesserung der Leistung festgestellt.
Bei einer anderen Anforderung mussten die Protokolle in einen HDFS-Cluster geschrieben werden, und dieser Prozess sollte unabhängig von der vorherigen Anwendung ausgeführt werden. (Dies liegt daran, dass wir mit einem weiteren Anstieg der Daten beabsichtigten, die erste Anwendung außer Betrieb zu setzen und alle Statistiken abzuleiten in der HDFS-Umgebung). Um diese Anforderung zu erfüllen, haben wir eine andere Anwendung entwickelt, die das Thema unter Verwendung einer anderen Consumer-Gruppe abonniert und die Daten in den HDFS-Cluster geschrieben hat.
Empfohlene Artikel
Dies ist ein Leitfaden für die Kafka Consumer Group. Hier diskutieren wir die Bedeutung der Kafka-Verbrauchergruppe und wie Kafka zwei Modelle zusammen mit ihrer Anwendungsfall-Implikation verbindet. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.
- Kafka-Anwendungen
- Wie installiere ich Kafka?
- Fragen in Vorstellungsgesprächen bei Kafka
- HDFS-Architektur
- Verschiedene Arten von Kafka-Werkzeugen