wake-up-neo.com

Ist Zookeeper ein Muss für Kafka?

In Kafka möchte ich nur einen einzelnen Broker, ein einzelnes Thema und eine einzelne Partition mit einem Produzenten und mehreren Konsumenten verwenden (wobei jeder Konsument eine eigene Kopie der Daten vom Broker erhält). Aus diesem Grund möchte ich nicht den Aufwand für die Verwendung von Zookeeper. Kann ich nicht nur den Broker benutzen? Warum muss ein Tierpfleger?

88
Paaji

Ja, Zookeeper ist erforderlich, um Kafka zu betreiben. Aus der Kafka Erste Schritte Dokumentation:

Schritt 2: Starten Sie den Server

Kafka verwendet zookeeper, Sie müssen also zuerst einen zookeeper-Server starten, falls Sie noch keinen haben. Sie können das mit kafka gepackte Convenience-Skript verwenden, um eine schnelle und fehlerfreie Zookeeper-Instanz mit einem einzelnen Knoten zu erhalten.

Was den Grund angeht, so haben die Leute vor langer Zeit herausgefunden, dass Sie eine Möglichkeit haben müssen, Aufgaben, Statusverwaltung, Konfiguration usw. auf einem verteilten System zu koordinieren. Einige Projekte haben ihre eigenen Mechanismen erstellt (denken Sie an den Konfigurationsserver in einem MongoDB-Sharded-Cluster oder an einen Master-Knoten in einem Elasticsearch-Cluster). Andere haben sich entschieden, Zookeeper als universelles verteiltes Prozesskoordinierungssystem zu nutzen. So verwenden Kafka, Storm, HBase, SolrCloud, um nur einige zu nennen, Zookeeper, um die Verwaltung und Koordination zu unterstützen.

Kafka ist ein verteiltes System und wurde für die Verwendung von Zookeeper entwickelt. Die Tatsache, dass Sie keine der verteilten Funktionen von Kafka verwenden, ändert nichts an der Art und Weise, wie sie erstellt wurden. Auf jeden Fall sollte die Verwendung von Zookeeper nicht viel Aufwand verursachen. Eine größere Frage ist, warum Sie würde dieses spezielle Entwurfsmuster verwenden - eine einzige Brokerimplementierung von Kafka verpasst alle Zuverlässigkeitsmerkmale eines Multi-Broker-Clusters zusammen mit seiner Skalierbarkeit.

102
John Petrone

Wie von anderen erklärt, funktioniert Kafka (auch in der neuesten Version) nicht ohne Zookeeper.

Kafka verwendet Zookeeper für Folgendes:

Wahl eines Controllers . Der Controller ist einer der Broker und für die Aufrechterhaltung der Leader/Follower-Beziehung für alle Partitionen verantwortlich. Wenn ein Knoten heruntergefahren wird, teilt der Controller anderen Replikaten mit, dass sie Partitionsleiter werden sollen, um die Partitionsleiter auf dem weggehenden Knoten zu ersetzen. Zookeeper wird verwendet, um einen Controller zu wählen, stellen Sie sicher, dass es nur einen gibt, und wählen Sie einen neuen Controller, falls er abstürzt.

Cluster-Mitgliedschaft - Welche Broker sind am Leben und Teil des Clusters? Dies wird auch über ZooKeeper verwaltet.

Themenkonfiguration - Welche Themen gibt es, wie viele Partitionen hat jede, wo befinden sich die Replikate, wer ist der bevorzugte Leiter, welche Konfigurationsüberschreibungen werden für jedes Thema festgelegt

(0.9.0) - Quoten - wie viele Daten darf jeder Client lesen und schreiben

(0.9.0) - ACLs - wer darf zu welchem ​​Thema lesen und schreiben (alter High-Level-Consumer) - welche Consumer-Gruppen existieren, wer sind ihre Mitglieder und was ist der letzte Versatz, den jede Gruppe von jeder Partition bekam.

[from https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]

In Ihrem Szenario kann nur eine Broker-Instanz und ein Produzent mit mehreren Consumer-Instanzen einen Channel erstellen und ein Push-Ereignis an diesen Channel senden, den der Consumer abonnieren und diese Events übergeben kann. https://pusher.com/

48
Kevin Li

Kafka ist für die Verwendung von Zookeeper ausgelegt. Dem entgeht nichts.

Kafka ist ein verteiltes System und verwendet Zookeeper, um den Status von kafka Clusterknoten zu verfolgen. Außerdem werden Kafka Themen, Partitionen usw. verfolgt.

Wenn Sie sich Ihre Frage ansehen, brauchen Sie anscheinend Kafka nicht. Sie können jede Anwendung verwenden, die Pub-Sub unterstützt, z. B. Redis , Rabbit MQ oder gehostete Lösungen wie Pub-nub .

10
Santosh Rout

IMHO Zookeeper ist kein Overhead, sondern erleichtert Ihnen das Leben erheblich.

Es wird im Wesentlichen verwendet, um die Koordination zwischen verschiedenen Knoten in einem Cluster aufrechtzuerhalten. Eines der wichtigsten Dinge für Kafka) ist, dass es zookeeper verwendet, um in regelmäßigen Abständen Offsets festzuschreiben, damit es im Falle eines Knotenausfalls von dem zuvor festgeschriebenen Offset zurückgesetzt werden kann (stellen Sie sich vor, Sie kümmern sich um alles besitzen).

Zookeeper spielt auch eine wichtige Rolle für viele andere Zwecke, z. B. die Erkennung von Leadern, das Konfigurationsmanagement, die Synchronisierung und die Erkennung, wann ein neuer Knoten dem Cluster beitritt oder diesen verlässt.

Zukünftige Kafka Releases planen, die Abhängigkeit von Zookeepern zu beseitigen, aber ab sofort ist es ein wesentlicher Bestandteil davon.

Hier sind ein paar Zeilen von ihrer FAQ Seite:

Sobald das Zookeeper-Quorum nicht mehr verfügbar ist, können Broker zu einem schlechten Zustand führen und Kundenanfragen usw. nicht mehr bedienen. Wenn das Zookeeper-Quorum wiederhergestellt wird, sollten die Kafka Broker in der Lage sein, den normalen Zustand wiederherzustellen automatisch gibt es immer noch ein paar Eckfälle, die sie nicht können, und ein hartes Kill-and-Recovery ist erforderlich, um den Normalzustand wiederherzustellen. Daher wird empfohlen, Ihren Zookeeper-Cluster genau zu überwachen und so bereitzustellen, dass er leistungsfähig ist.

Für mehr Details bitte hier

6
user2720864

Wichtiges Update - August 2019:

Die Abhängigkeit von ZooKeeper wird von Apache Kafka entfernt . Weitere Informationen finden Sie in KIP-500 : ZooKeeper durch ein selbst verwaltetes Metadaten-Quorum ersetzen .

Für diese Bemühungen sind einige Kafka Releases und zusätzliche KIPs erforderlich. Kafka Controller übernehmen die Aufgaben der aktuellen ZooKeeper-Aufgaben. Die Controller werden die Vorteile des Ereignisprotokolls nutzen, das ein Kernkonzept von Kafka ist.

Einige Vorteile der neuen Kafka Architektur sind eine einfachere Architektur, einfache Bedienung und bessere Skalierbarkeit (z. B. "unbegrenzte Partitionen" zulassen).

3
Kai Wähner

Abgesehen von der üblichen Übertragung von Nutzlastnachrichten gibt es in kafka viele andere Kommunikationsvorgänge. wie * Ereignisse im Zusammenhang mit Brokern, die die Cluster-Mitgliedschaft anfordern * Ereignisse im Zusammenhang mit Brokern, die verfügbar werden * Abrufen von bootstrap Konfigurations-Setups. * Ereignisse im Zusammenhang mit Controller- und Leader-Updates. * Hilfe Status Updates wie Heartbeat Updates.

Zookeeper selbst ist ein verteiltes System, das aus mehreren Knoten in einem Ensemble besteht. Zookeeper ist ein zentraler Dienst zur Verwaltung solcher Metadaten.

2
Amulya

Zookeeper ist ein Zentralisierungs- und Verwaltungssystem für alle Arten von verteilten Systemen. Bei einem verteilten System handelt es sich um verschiedene Softwaremodule, die auf verschiedenen Knoten/Clustern (möglicherweise an geografisch entfernten Standorten) ausgeführt werden, jedoch als ein System. Zookeeper erleichtert die Kommunikation zwischen den Knoten, teilt Konfigurationen zwischen den Knoten, verfolgt, welcher Knoten führend ist, welcher Knoten beitritt/verlässt usw. Zookeeper ist derjenige, der verteilte Systeme vernünftig und konsistent hält. Zookeeper ist im Grunde eine Orchestrierungsplattform.

Kafka ist ein verteiltes System. Und daher ist es benötigt eine Art Orchestrierung für seine Knoten, die geografisch entfernt sind (oder nicht).

2
Shree