Apache ZooKeeper ist ein Open-Source-System zur verteilten Koordination, das eine Plattform für Konfigurationsmanagement, Prozess-Synchronisation und Lock-Management bietet. Ursprünglich von Yahoo entwickelt, wird es heute von Apache gepflegt.
Apache ZooKeeper bietet außerdem eine hohe Verfügbarkeit und Ausfallsicherheit, was ihn zu einer zuverlässigen Lösung für große, verteilte Umgebungen macht. Tatsächlich kann er sehr hohe Arbeitslasten bewältigen und ist so konzipiert, dass er sich an immer komplexere Umgebungen anpassen kann. In diesem Artikel werden wir versuchen, den Schleier über seiner Funktionsweise zu lüften und die Grundlagen zu verstehen.Wie funktioniert Apache Zookeeper?
Décrivons dans un premier temps l’architecture de Apache ZooKeeper.
- Ein Client bezieht sich auf eine Client-Anwendung, die Anfragen an die ZooKeeper-Server sendet, um Konfigurationen zu verwalten und verteilte Dienste zu synchronisieren. Sie können sich mit einem beliebigen Server verbinden, der die Anfrage an den entsprechenden Server weiterleitet.
- Ein Server ist ein Knoten im ZooKeeper-Cluster. Sie sind dafür verantwortlich, die eingehenden Anfragen zu verwalten, die Daten zu speichern und sie auf dem neuesten Stand zu halten. Server können sich gegenseitig replizieren, um eine hohe Verfügbarkeit zu gewährleisten.
- Ein Server wird zum Leader gewählt und ist dafür verantwortlich, die Replikationen des Ganzen zu koordinieren. Dieser Leader verwaltet also die Replikation der Daten und weist den verschiedenen Servern ihre Transaktionen zu. Wenn der Leader ausfällt, wird sofort ein anderer Server gewählt, der seinen Platz einnimmt und seine Aufgaben übernimmt.
- Ein Follower ist ein Knoten, der die Anweisungen des Anführers befolgt.
- Die Gesamtheit ist eine Gruppe von Apache ZooKeeper-Servern.
| Apache Spark |
| Apache Kafka |
| Apache Cassandra |
| Apache Schulung |
| Apache Airflow |
Datenmodelle: Was ist das?
Apache ZooKeeper verwendet ein Datenmodell, das auf einer Knotenhierarchie basiert, die der Struktur eines Dateisystems ähnelt. So wird jeder Knoten durch einen eindeutigen Pfad in der Baumstruktur identifiziert. Sie können Kinder haben, die in Wirklichkeit Knoten sind, die in der Hierarchie unterhalb des Elternknotens liegen. Diese Baumstruktur ermöglicht komplexe Datenstrukturen zur Darstellung von Informationen, die für die Koordination und Synchronisation von verteilten Anwendungen benötigt werden.
- Die Versionsnummer erhöht sich jedes Mal, wenn sich die mit dem znode verbundenen Daten ändern. Dies ist wichtig, wenn mehrere Clients versuchen, Operationen auf demselben znode durchzuführen.
- ACLs (Zugriffskontrollen) fungieren als Authentifizierungsmechanismus für den Zugriff auf den Znode.
- Der Zeitstempel stellt die Zeit dar, die seit der Erstellung oder der letzten Änderung des znode verstrichen ist, dargestellt in Millisekunden. Diese Änderung wird anhand der Transaktionskennung (dem zxid) identifiziert.
- Diese zxid ist einzigartig und ermöglicht es, die zwischen mehreren Anfragen verstrichene Zeit leicht zu identifizieren.
- Die Datenlänge stellt die Gesamtmenge der in einem znode gespeicherten Daten dar. Es kann maximal 1 Megabyte an Daten gespeichert werden.
Welche verschiedenen Arten von Knoten gibt es?
Znodes können verschiedene Typen haben:- Persistente Znodes: Diese Knoten existieren immer, auch wenn der Client, der diesen Znode erstellt hat, sich abgemeldet hat. Standardmäßig sind alle Znodes persistent, wenn nicht anders angegeben.
- Kurzlebige Znodes: Sie bleiben aktiv, solange der Client angemeldet ist. Sobald sich ein Client abmeldet, werden die kurzlebigen Znodes automatisch gelöscht. Aus diesem Grund können sie keine weiteren Kinder haben. Wenn ein Eintagsfliegen-Znode gelöscht wird, füllt der nächste geeignete Knoten seine Position aus. Sie spielen eine wichtige Rolle bei der Wahl des Anführers.
- Sequentieller Znode: Dieser letzte Znodentyp kann entweder dauerhaft oder kurzlebig sein. Wenn diese Art von Znode erstellt wird, legt ZooKeeper den Pfad des Znodes fest, indem er eine 10-stellige Sequenz an den ursprünglichen Namen anhängt. Wenn zum Beispiel ein Znode mit dem Pfad /myapp als sequentieller Znode erstellt wird, ändert ZooKeeper den Pfad in /myapp0000000001 und setzt die nächste Sequenznummer auf 0000000002. Für den Fall, dass 2 sequenzielle Znodes gleichzeitig erstellt werden, wird ZooKeeper niemals die gleiche Nummer für jeden Znode verwenden. Diese Art von Znode spielt eine wichtige Rolle beim Sperren und Synchronisieren.

