2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper ist ein hochverfügbarer verteilter Koordinationsdienst, der in verteilten Systemen häufig verwendet wird, um das Konsistenzproblem verteilter Systeme zu lösen. Im Folgenden werden die zugrunde liegenden Prinzipien von ZooKeeper ausführlich vorgestellt, einschließlich Architektur, Datenmodell, Kernmechanismus und Konsistenzprotokoll.
ZooKeeper verwendet eine Master-Slave-Architektur, die normalerweise aus einem Leader und mehreren Followern besteht. Es gibt auch Observer-Knoten als nicht stimmberechtigte Knoten, um den Druck von Leseanforderungen zu teilen.
ZooKeeper speichert Daten in einer Baumstruktur ähnlich einem Dateisystem, und jeder Knoten wird als Znode bezeichnet.
Zwischen jedem Client und dem ZooKeeper-Cluster wird eine Sitzung eingerichtet, um den Verbindungsstatus aufrechtzuerhalten und temporäre Knoten zu verwalten. ZooKeeper erkennt den Verbindungsstatus des Clients über den Heartbeat-Mechanismus. Wenn innerhalb eines bestimmten Zeitraums kein Heartbeat empfangen wird, gilt die Sitzung als getrennt.
Um die Datenkonsistenz jedes Knotens sicherzustellen, verwendet ZooKeeper einen Datensynchronisierungsmechanismus. Wenn der Leader-Knoten eine Schreibanforderung verarbeitet, sendet er den Änderungsvorgang an alle Follower-Knoten. Der Follower-Knoten bestätigt, nachdem er den Änderungsvorgang akzeptiert hat, und der Leader-Knoten entscheidet letztendlich, ob der Änderungsvorgang erfolgreich ist.
ZooKeeper unterstützt den Watch-Mechanismus. Wenn sich die Daten oder untergeordneten Knoten des Znodes ändern, benachrichtigt ZooKeeper den Client.
ZooKeeper verwendet ein Konsistenzprotokoll namens ZAB (Zookeeper Atomic Broadcast), um die Datenkonsistenz sicherzustellen. ZAB besteht aus zwei Phasen: der Wahlphase und der Sendephase.
Wenn der ZooKeeper-Cluster startet oder der Leader-Knoten ausfällt, ist eine Wahl erforderlich, um einen neuen Leader zu bestimmen. Die Wahlphase gliedert sich im Wesentlichen in die folgenden Schritte:
Nachdem der Leader ermittelt wurde, tritt die Broadcast-Phase ein. Der Leader ist für die Verarbeitung der Schreibanforderung des Clients und die Übertragung des Änderungsvorgangs an alle Follower-Knoten verantwortlich. Konkrete Schritte sind wie folgt:
Das Folgende ist ein einfaches Beispiel für die Verwendung von ZooKeeper, das zeigt, wie Knoten erstellt, Knotendaten gelesen und Watch registriert werden.
existieren pom.xml
Einführung der ZooKeeper-Client-Abhängigkeit.
xmlCode kopieren