In Kafka möchte ich nur einen einzigen Broker, ein einziges Thema und eine einzige Partition mit einem Produzenten und mehreren Konsumenten verwenden (jeder Konsument erhält seine eigene Kopie der Daten vom Broker). Vor diesem Hintergrund möchte ich nicht den Aufwand für die Verwendung von Zookeeper. Kann ich nicht nur den Broker benutzen? Warum muss ein Tierpfleger?
133
Zookeeper is network coordinator in a distributed system. Use ZooKeeper extensively for discovery, resource allocation, leader election, and high priority notifications.
Antworten:
Ja, Zookeeper ist erforderlich, um Kafka auszuführen. Aus der Dokumentation zu Kafka Erste Schritte:
Vor langer Zeit haben die Leute festgestellt, dass Sie eine Möglichkeit haben müssen, Aufgaben, Statusverwaltung, Konfiguration usw. in 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 verteiltes Prozesskoordinierungssystem für allgemeine Zwecke zu nutzen. Kafka, Storm, HBase, SolrCloud, um nur einige zu nennen, verwenden Zookeeper, um die Verwaltung und Koordination zu erleichtern.
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 es erstellt wurde. In jedem Fall sollte die Verwendung von Zookeeper nicht viel Aufwand bedeuten. Eine größere Frage ist, warum Sie dieses spezielle Entwurfsmuster verwenden würden - bei einer einzelnen Broker-Implementierung von Kafka fehlen alle Zuverlässigkeitsmerkmale eines Multi-Broker-Clusters sowie die Skalierbarkeit.
quelle
Wie von anderen erklärt, funktioniert Kafka (auch in der neuesten Version) ohne Zookeeper nicht.
Kafka verwendet Zookeeper für Folgendes:
Controller wählen . 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, weist der Controller andere Replikate an, Partitionsleiter zu werden, um die Partitionsleiter auf dem Knoten zu ersetzen, der entfernt wird. Zookeeper wird verwendet, um einen Controller zu wählen, sicherzustellen, dass es nur einen gibt, und einen neuen zu wählen, wenn er abstürzt.
Cluster-Mitgliedschaft - Welche Broker sind am Leben und Teil des Clusters? Dies wird auch über ZooKeeper verwaltet.
Topic Konfiguration - die Themen vorhanden sind , wie viele Partitionen jeder hat, wo die Repliken sind, die der bevorzugte Leiter ist, welche Konfiguration überschreibt für jedes Thema eingestellt
(0.9.0) - Kontingente - 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 Offset, den jede Gruppe von jeder Partition erhalten hat.
[von https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]
In Bezug auf Ihr Szenario, nur eine Brokerinstanz und ein Produzent mit mehreren Verbrauchern, können Sie mit pusher einen Kanal erstellen und das Ereignis an den Kanal senden, den der Verbraucher abonnieren und diese Ereignisse übergeben kann. https://pusher.com/
quelle
Wichtiges Update - August 2019:
Die ZooKeeper-Abhängigkeit wird aus Apache Kafka entfernt . Weitere Informationen finden Sie in der allgemeinen Diskussion in KIP-500 : Ersetzen Sie ZooKeeper durch ein selbstverwaltetes Metadaten-Quorum .
Diese Bemühungen erfordern einige Kafka-Veröffentlichungen und zusätzliche KIPs. Kafka Controller übernehmen die Aufgaben der aktuellen ZooKeeper-Aufgaben. Die Controller werden die Vorteile des Ereignisprotokolls nutzen, das ein Kernkonzept von Kafka darstellt.
Einige Vorteile der neuen Kafka-Architektur sind eine einfachere Architektur, einfache Bedienung und bessere Skalierbarkeit (z. B. "unbegrenzte Partitionen" zulassen.
quelle
Aktualisiert am Jul 2020
Für die neueste Version (2.5.0) ZooKeeper ist nach wie vor erforderlich für die Ausführung von Kafka, aber in naher Zukunft ZooKeeper wird mit einem Self-Managed Metadata Quorum ersetzt werden .
Details finden Sie im akzeptierten KIP-500 .
quelle
Kafka wurde für die Verwendung von Zookeeper entwickelt. Dem entgeht nichts.
Kafka ist ein verteiltes System und verwendet Zookeeper, um den Status von Kafka-Clusterknoten zu verfolgen. Es verfolgt auch Kafka-Themen, Partitionen usw.
Wenn Sie Ihre Frage betrachten, scheinen Sie Kafka nicht zu brauchen. Sie können jede Anwendung verwenden, die Pub-Sub wie Redis , Rabbit MQ oder gehostete Lösungen wie Pub-Nub unterstützt .
quelle
IMHO Zookeeper ist kein Overhead, aber 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 zookeeper regelmäßig Offsets festschreibt, damit bei einem Knotenausfall der zuvor festgeschriebene Offset wieder aufgenommen werden kann (stellen Sie sich vor, Sie kümmern sich selbst darum).
Zookeeper spielt auch eine wichtige Rolle für viele andere Zwecke, z. B. für die Erkennung von Führungskräften, das Konfigurationsmanagement, die Synchronisierung, die Erkennung, wann ein neuer Knoten dem Cluster beitritt oder diesen verlässt usw.
Zukünftige Kafka-Versionen planen, die Zookeeper-Abhängigkeit zu beseitigen, aber ab sofort ist sie ein wesentlicher Bestandteil davon.
Hier sind einige Zeilen aus ihrer FAQ-Seite:
Weitere Details finden Sie hier
quelle
IMHO zookeeper is not an overhead but makes your life a lot easier.
-> nicht aus Sicht eines Sysops. Zk ist ein Stück alte Java-Cruft. Es hat zum Beispiel einen seit langem ausstehenden Fehler, da es sich nicht an die ttl eines DNS-Eintrags hält, sodass ein Eintrag nicht erneut aufgelöst wird. Aus dem Fenster gehen Ihre Server-Swap-Möglichkeiten. Ich würde es gerne gegen etcd eintauschen.Zookeeper zentralisiert und verwaltet Systeme für alle Arten von verteilten Systemen. Das verteilte System besteht aus verschiedenen Softwaremodulen, die auf verschiedenen Knoten / Clustern ausgeführt werden (möglicherweise an geografisch entfernten Standorten), jedoch als ein System ausgeführt werden. 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 gesund hält und Konsistenz gewährleistet. Zookeeper ist im Grunde eine Orchestrierungsplattform.
Kafka ist ein verteiltes System. Und daher benötigt es eine Art Orchestrierung für seine Knoten, die geografisch entfernt sein können (oder nicht).
quelle
Ja, Zookeeper ist ein Muss für Kafka. Weil Zookeeper die Verantwortung für die Verwaltung des Kafka-Clusters trägt. Es enthält eine Liste aller Kafka-Broker. Es benachrichtigt Kafka, wenn ein Broker ausfällt oder eine Partition ausfällt oder ein neuer Broker aktiv ist oder eine Partition aktiv ist. Kurz gesagt, ZK hält jeden Kafka-Broker über den aktuellen Status des Kafka-Clusters auf dem Laufenden.
Dann muss sich jeder Kafka-Client (Produzent / Konsument) nur mit einem einzelnen Broker verbinden, und dieser Broker verfügt über alle von Zookeeper aktualisierten Metadaten, sodass sich der Client nicht um die Probleme bei der Brokererkennung kümmern muss.
quelle
Abgesehen von der üblichen Übertragung von Nutzdatennachrichten gibt es viele andere Kommunikationen, die in kafka stattfinden, wie z
Zookeeper selbst ist ein verteiltes System, das aus mehreren Knoten in einem Ensemble besteht. Zookeeper ist ein zentraler Dienst zur Pflege solcher Metadaten.
quelle
Dieser Artikel erklärt die Rolle des Tierpflegers in Kafka. Es wird erklärt, wie kafka zustandslos ist und wie der Tierpfleger eine wichtige Rolle in der verteilten Natur von kafka (und vielen weiteren verteilten Systemen) spielt.
quelle
Die Bitte, Kafka ohne Zookeeper zu betreiben, scheint weit verbreitet zu sein. Die Bibliothek Charlatan spricht dies an.
Laut der Beschreibung ist Charlatan mehr oder weniger ein Schein für Zookeeper, der die Zookeeper-Dienste entweder durch andere Tools oder durch eine Datenbank unterstützt.
Ich bin auf diese Bibliothek gestoßen, als ich mich mit dem Hauptprodukt der Autoren für die Charlatan-Bibliothek befasst habe. dort funktioniert es gut ...
quelle
Apache ZooKeeper ist ein verteilter Speicher, der verwendet wird, um Konfigurations- und Synchronisierungsdienste auf hochverfügbare Weise bereitzustellen . In neueren Versionen von Kafka wurde daran gearbeitet, dass die Kundenkonsumenten keine Informationen darüber speichern, wie weit sie Nachrichten (Offsets genannt) in ZooKeeper verbraucht haben.
.This reduced usage did not get rid of the need for consensus and coordination in distributed systems however.
Während Kafka Fehlertoleranz und Ausfallsicherheit bietet , ist etwas erforderlich, um die Koordination erforderlich und ZooKeeper ermöglicht diesen Teil des Gesamtsystems.Ein Beispiel für die praktische Anwendung von ZooKeeper im Kafka-Ökosystem ist die Vereinbarung, wer der Leiter einer Partition ist.
Diese stammen aus dem Buch Kafka In Action . Bild ist von diesem Kurs
quelle