Frage

Ich versuche ZooKeeper zu verstehen, wie es funktioniert und was es tut. Gibt es eine Anwendung, die auf ZooKeeper vergleichbar ist?

Wenn Sie wissen, dann, wie würden Sie ZooKeeper einen Laien beschreiben?

Ich habe Apache Wiki versucht, zookeeper Source ... aber ich bin noch nicht in der Lage, es zu beziehen.

Ich habe gerade gelesen durch http://zookeeper.sourceforge.net/index.sf.shtml , sind so nicht mehr Dienste wie das? Ist es so einfach wie nur einen Server-Dienst zu replizieren?

War es hilfreich?

Lösung

Auf den Punkt gebracht, ZooKeeper hilft Ihnen, verteilte Anwendungen zu erstellen.

Wie es funktioniert

Sie können ZooKeeper als replizierte Synchronisationsdienst mit Eventual Consistency beschreiben. Es ist robust, da die persistenten Daten zwischen mehreren Knoten (dieser Satz von Knoten wird als eine „Kombination“ bezeichnet) und ein Client eine Verbindung zu einem von ihnen (das heißt, ein bestimmter „Server“), die Migration, wenn ein Knoten ausfällt verteilt wird; solange eine strikte Mehrheit der Knoten arbeitet, ist das Ensemble von ZooKeeper Knoten lebendig. Insbesondere wird ein Master-Knoten durch Konsens innerhalb des Ensembles dynamisch gewählt; wenn der Master-Knoten ausfällt, die Rolle des Masters wandert auf einem anderen Knoten.

Wie schreibt behandelt werden

Der Master ist die Behörde für schreibt: auf diese Weise schreibt garantiert werden kann, in Ordnung zu beibehalten werden, das heißt, schreibt sind linear . Jedes Mal, wenn ein Client zum Ensemble schreibt, bleibt die Mehrheit der Knoten die Information: Diese Knoten umfassen den Server für die Kunden, und natürlich den Meister. Dies bedeutet, dass jeder Schreib macht den Server up-to-date mit dem Master. Es bedeutet aber auch, dass man nicht gleichzeitig schreibt haben.

Die Garantie von linearen schreibt ist der Grund für die Tatsache, dass ZooKeeper nicht gut für Schreib dominant Workloads nicht durchführt. Insbesondere sollte es nicht für den Austausch großer Daten, wie Medien verwendet werden. Solange Ihre Kommunikationsdaten geteilt beinhaltet, ZooKeeper hilft Ihnen. Wenn Daten gleichzeitig geschrieben werden können, wird ZooKeeper tatsächlich in der Art und Weise, weil es eine strenge Ordnung von Operationen, auch wenn nicht unbedingt notwendig, aus der Sicht der Autoren auferlegt. Seine ideale Nutzung ist für die Koordination, in denen Nachrichten zwischen den Clients ausgetauscht werden.

Wie liest behandelt werden

Dies ist, wo ZooKeeper zeichnet: liest gleichzeitig sind, da sie von dem bestimmten Server bedient werden, dass der Client eine Verbindung zu. Dies ist jedoch auch der Grund für die mögliche Konsequenz. „Ansicht“ eines Kunden wird veraltet kann, da der Master den entsprechenden Server mit einer begrenzten, aber nicht definierte Verzögerung aktualisiert

Im Detail

Die replizierte Datenbank von ZooKeeper umfasst einen Baum von znodes , das sind Unternehmen, etwa Dateisystemknoten darstellen (man denke an sie als Verzeichnisse). Jede ZNODE kann durch ein Byte-Array angereichert werden, die Daten speichert. Außerdem kann jede ZNODE haben andere znodes unter ihm, praktisch ein internes Verzeichnissystem bilden.

Sequential znodes

Interessanterweise kann der Name eines ZNODE sein sequenziellen was bedeutet, dass der Name die Client bereitstellt, wenn der ZNODE schafft, ist nur ein Präfix: der vollständige Name von einer fortlaufenden Nummer auch durch die gewählte gegeben Ensemble. Dies ist nützlich, beispielsweise zur Synchronisation: Wenn mehrere Clients eine Sperre für eine Ressource erhalten mögen, können sie jeweils gleichzeitig eine sequentielle ZNODE auf einem Standort erstellen. Wer die niedrigste Zahl wird auf das Schloss des Titel

kurzlebiger znodes

Auch kann ein ZNODE sein ephemeren : Dies bedeutet, dass es, sobald der Client zerstört wird, die erstellt sie trennt. Dies ist vor allem nützlich, um zu wissen, wann ein Client ausfällt, die relevant sein kann, wenn der Kunde selbst hat Aufgaben, die von einem neuen Kunden genommen werden sollten. Am Beispiel des Schlosses, sobald der Kunde die Sperre trennt haben, können die anderen Clients überprüfen, ob sie die Sperre berechtigt sind.

Uhren

Das Beispiel zur Client Trennung im Zusammenhang kann problematisch sein, wenn wir in regelmäßigen Abständen erforderlich, um den Zustand der znodes abzufragen. Glücklicherweise bietet ZooKeeper ein Event System, in dem ein Uhr kann auf einem ZNODE eingestellt werden. Diese Uhren können eingestellt werden, um ein Ereignis auszulösen, wenn die ZNODE gezielt verändert oder entfernt oder neue Kinder darunter geschaffen. Dies ist eindeutig, die in Kombination mit der sequentiellen und ephemeren Optionen für znodes.

Wo und wie man es benutzt

Ein kanonisches Beispiel für Zookeeper Nutzung ist die Berechnung mit verteiltem Speicher, wo einige Daten zwischen Client-Knoten und müssen zugegriffen / aktualisiert werden, in eine sehr sorgfältigen Art und Weise zur Rechenschaft für die Synchronisation freigegeben ist.

ZooKeeper bietet die Bibliothek, um Ihre Synchronisierungsgrund zu konstruieren, während die Fähigkeit, die Single-Point-of-Failure Problem eines verteilten Server vermeidet laufen Sie haben, wenn eine zentralisierte (Broker-like) Nachrichten-Repository verwenden.

ZooKeeper ist feature-Licht, was bedeutet, dass Mechanismen wie Leader-Election, Schlösser, Absperrungen usw. sind nicht bereits vorhanden, kann aber über den ZooKeeper Primitiven geschrieben werden. Wenn die C / Java-API zu unhandlich für Ihre Zwecke ist, sollten Sie auf Bibliotheken setzen auf ZooKeeper gebaut wie Käfige und insbesondere Kurator .

Wo man mehr lesen

Offizielle Dokumentation auseinander, was ziemlich gut ist, schlage ich Kapitel 14 von Hadoop zu lesen: The Definitive Guide die hat ~ 35 Seiten erklären im wesentlichen, was ZooKeeper tut, gefolgt von einem Beispiel eines Konfigurationsdienst.

Andere Tipps

ist Zookeeper eines der besten Open-Source-Server und Service, verteilte Prozesse zuverlässig Koordinaten hilft. Zookeeper ist ein CP-System (siehe Theorem CAP), dass die Konsistenz und Partitionstoleranz bietet. Die Replikation von Zookeeper Zustand über alle Knoten macht es zu einem letztendlich konsistenten verteilte Service.

Darüber hinaus wird jeder neu gewählter Führer seine Anhänger mit fehlenden Vorschlägen aktualisieren oder bei einer Momentaufnahme des Zustands, wenn die Anhänger fehlen viele Vorschläge haben.

Zookeeper bietet auch eine API, die sehr einfach zu bedienen ist. Dieser Blog-Eintrag, Zookeeper Java API Beispiele , hat einige Beispiele, wenn Sie Beispiele suchen.

Also, wo verwenden wir das? Wenn Sie verteilte Service ein zentrales, zuverlässiges und konsistentes Konfigurationsmanagement benötigt, Schlösser, Warteschlangen usw., werden Sie Zookeeper eine zuverlässige Wahl finden.

verstehe ich die ZooKeeper im Allgemeinen, sondern hatte Probleme mit den Begriffen „Quorum“ und „split brain“ so vielleicht kann ich meine Erkenntnisse mit Ihnen teilen (ich halte mich auch ein Laie).

Lassen Sie uns sagen, dass wir einen ZooKeeper Cluster von 5 Server haben. Einer der Server wird die Führer und die anderen werden Anhänger geworden.

  • Diese 5-Server bilden ein Quorum. Quorum bedeutet einfach „diese Server abstimmen davon ab, wer der Anführer sein sollte“.

  • So ist die Abstimmung über Mehrheit beruht. Mehrheit bedeutet einfach „mehr als die Hälfte“, so mehr als die Hälfte der Anzahl der Server für einen bestimmten Server zustimmen muss der Führer zu werden.

  • So gibt es diese schlechte Sache, die "split brain" genannt vorkommen kann. Ein Split-Brain ist einfach dies, soweit ich das verstehen: Der Cluster von 5 Server teilt sich in zwei Teile, oder lassen Sie uns nennen ihn „Server-Teams“, mit vielleicht einem Teil 2 und dem anderen von 3 Servern. Das ist wirklich eine schlechte Situation, als ob beide „Server-Teams“ muss eine bestimmte Reihenfolge ausgeführt werden, wie würden Sie Weichen Team entscheiden bevorzugt werden soll? Sie haben möglicherweise unterschiedliche Informationen von den Kunden erhalten. So ist es wirklich wichtig zu wissen, was „Server-Team“ noch relevant ist und was man kann / sollte ignoriert werden.

  • Die Mehrheit ist auch der Grund, warum Sie eine ungerade Anzahl von Servern verwendet werden soll. Wenn Sie 4-Server haben und eine Split-Brain, wo zwei Servern trennen dann beide „Server-Team“ könnte sagen: „Hey, wollen wir entscheiden, wer der Führer!“ aber wie sollten Sie entscheiden, welche 2-Server sollten Sie wählen? Mit 5 Servern Es ist ganz einfach. Der Server-Team mit 3 Servern hat die Mehrheit und darf die neuen Führer wählen

  • Auch wenn Sie nur 3-Server haben und einer von ihnen nicht die anderen 2 immer noch die Mehrheit bilden, und dass einer von ihnen zustimmen kann, wird der neue Führer werden.

Ich weiß, wenn Sie es einige Zeit denken und verstehen, die Bedingungen ist es nicht mehr so ??kompliziert. Ich hoffe, das jemand auch hilft, diese Begriffe zu verstehen.

Zookeeper ist ein zentraler Open-Source-Server für die Wartung und Konfigurationsinformationen verwalten, Konventionen und Synchronisation für verteilen Cluster-Umgebung zu benennen. Zookeeper hilft, die verteilen Systemen ihre Management-Komplexität zu reduzieren, indem niedrige Latenz und hohe Verfügbarkeit. Zookeeper war zunächst ein Teilprojekt für Hadoop, aber jetzt ist es ein Top-Level-unabhängiges Projekt von Apache Software Foundation.

Weitere Informationen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top