Video: Infinit's Next Generation Key-value Store 2024
Ein großer Cluster von NoSQL-Datenbanken ist schwer zu handhaben. Apache Zookeeper zur Rettung! Es ist keine einfache Aufgabe, zu verfolgen, welche Knoten sich im Cluster befinden, welche Daten sie verwalten und ob neue Master ausgewählt werden, wenn ein Master ausfällt.
Das Koordinieren großer verteilter Systeme ist daher sehr schwierig. Sowohl Hadoop als auch verteilte NoSQL-Datenbanken benötigen eine Möglichkeit, die Konfiguration eines gesamten Clusters zu verwalten. Dieser Prozess muss auch hoch verfügbar sein, damit es kein Single Point of Failure im Gesamtsystem ist.
Hier kommt der Apache-Zookeeper ins Spiel. Zookeeper bietet einen verteilten, transaktionell konsistenten Koordinationsdienst.
Mehrere andere Produkte verwenden Zookeeper für die Clusterverwaltung:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (für einige seiner Dienstleistungen)
Zookeeper bietet eine hierarchische Speicherstruktur im Arbeitsspeicher, die einem Computerdateisystem ähnelt. Diese Struktur wird vom aktuellen Zookeeper-Master verwaltet und unter den anderen Knoten im Cluster repliziert. Ein Zookeeper-Cluster wird als Zookeeper e nsemble bezeichnet.
Nur der Master verwaltet Aktualisierungen (Schreibvorgänge) im Speicher. Diese Änderungen werden auf Festplatte festgeschrieben, um sie dauerhaft zu machen, und dann auf die anderen Zookeeper-Instanzen im Ensemble repliziert.
Diese Dienste speichern ihre Cluster-Konfigurationsdaten in Zookeeper. Einige von ihnen speichern auch die Schlüsselbereiche für Shards ihrer Datenbank. Dadurch können Clients, die eine NoSQL-Datenbank verwenden, die Zookeeper verwendet, mit jedem Zookeeper-Server im Ensemble kommunizieren. Auf diese Weise können Clients herausfinden, welche NoSQL-Server die Daten enthalten, an denen sie interessiert sind.
Wenn Sie nachsehen, welcher Knoten den Schlüsselbereich speichert, wird die Last auf den NoSQL-Servern minimiert, da sie keine Datenanfragen weiterleiten müssen. ein NoSQL-Knoten zu dem Knoten, der die Daten tatsächlich enthält.
Sie können den Datenspeicher von Zookeeper auch für kurzzeitigen Speicher verwenden (Speicher, der nicht über einen Neustart des Dienstes hinausgeht), was zum Speichern von Sitzungs- oder anderen Laufzeitdaten nützlich ist.
Zookeeper-Server verwenden diesen kurzlebigen Speicher, um festzustellen, wer bei einem Ausfall eines Masters übernimmt. Jeder Server erstellt einen nummerierten ephemeren Znode (Speicherdatei) im Schlüsselraum. Wenn der Zookeeper-Master (Leiter) einen Hardwarefehler erleidet, wird der Besitzer des nächsten Znode in der Sequenz zum Master. Dies ist eine elegante Lösung und vermeidet den "Herde" -Effekt, bei dem alle Server einige Sekunden lang verzweifelt miteinander kommunizieren, um einen neuen Master auszuwählen.
Zookeeper ist eine großartige Java-Lösung für die Probleme einer koordinierten Systemverwaltung und Hochverfügbarkeit. Sie können damit hoch verfügbare Dienste implementieren, einschließlich Messaging-Dienste. Wenn Sie also einen neuen verteilten Service erstellen müssen, sollten Sie Zookeeper verwenden.