1 - ZooKeeper [ID:28266]
50 von 181 angezeigt

Hallo zusammen, in diesem Video geht es darum, welche Funktionalitäten Apache Zookeeper,

das uns als Vorbild für die Übungsaufgabe dient, anbietet.

Anschließend werfen wir noch einen kurzen Blick auf die Übungsaufgabe, gefolgt von

ein paar Hinweisen zur Implementierung.

Zookeeper ist ein Koordinierungsdienst, der ursprünglich von der Forschungsabteilung

von Yahoo!

entwickelt wurde und seit einigen Jahren als Apache-Project zur Verfügung steht.

So ein Koordinierungsdienst ist, wenig überraschend, dazu da, um Dienste zu koordinieren.

Zum Beispiel kann ein Anführer für einen anderen Dienst bestimmt werden und falls dieser

Anführer dann ausfällt, lässt sich mit Hilfe von Zookeeper ein neuer Anführer bestimmen.

Das kann unter anderem von HTFS genutzt werden, um einen ausgefallenen Namedo zu ersetzen.

Eine andere Möglichkeit ist das Zookeeper zum konsistenten Speichern von Konfigurationsdaten

zu verwenden.

Das wird beispielsweise bei Apache Kafka gemacht. Das dient dazu, um Ereignisdatenströme

hin und her zu übertragen und das nutzt Zookeeper, um zu speichern, welche Server aktuell für

welchen Datenstrom zuständig sind.

Zum Schweichern von Daten bietet Zookeeper einen hierarchischen Namensraum an.

Dieser besteht aus Knoten mit Kindknoten, die wiederum selbst Kindknoten enthalten können

und so weiter.

Insgesamt ergibt sich damit dann eine Baumstruktur.

Jeder Knoten darin ist eindeutig über einen Pfad identifizierbar und kann Nutztat enthalten.

Für den Fall, dass mehrere Clients gleichzeitig schreiben wollen, gibt es anstelle von Logs

die Möglichkeit, bedingte Schreiboperationen zu verwenden.

Und Zookeeper bietet außerdem Garantien über die Verarbeitungsreihenfolge von Operationen.

Das kann man dann dazu nutzen, um Schreibzugriffe von Clients zu koordinieren.

Da ein Koordinierungsdienst oft ein zentraler Bestandteil der Infrastruktur ist, dessen

Ausfall alles Mögliche beeinträchtigen könnte, ist Zookeeper fehlerteuernd ausgelegt.

Dazu wird der Dienst auf mehrere Rechner, so garantiert Replikate repliziert, so dass

einzelne davon dann auch ohne Probleme ausfallen können und der Dienst einfach weiterläuft.

Damit entsteht allerdings das Problem, dass deren Daten konsistent gehalten werden müssen.

Zookeeper verwendet dazu einen passiven Replikation genannten Ansatz, bei dem effektiv ein Anführerrechner

bestimmt, was die aktuellen Daten sind und die dann konsistent auf den anderen Rechner

repliziert.

Außerdem verwendet Zookeeper eine Leseoptimierung, die es jedem Replikat und nicht nur dem Anführer

erlaubt, auf Leseanfragen zu antworten.

Mehr dazu und zu den Auswirkungen davon erkläre ich im Video konsistente Replikation.

Zu Zookeeper gibt es auch ein Paper namens Zookeeper Weight-Free Coordination for Internet

Scale Systems, das unter anderem auch wesentlich mehr Dateils dazu enthält, was man mit Zookeeper

alles machen kann.

Im Folgenden werde ich hauptsächlich nur auf die für uns im Rahmen der Übungsaufgabe

relevanten Funktionalitäten von Zookeeper eingehen.

Zum Bearbeiten von Knoten bietet Zookeeper einige Operationen an, von denen die meisten

wenig überraschend sind.

Mittels Create und Delete lassen sich Knoten erstellen bzw. wieder löschen.

Exist dient dazu, um zu prüfen, ob ein Knoten bereits existiert.

Per SetData und GetData lassen sich die Nutz- und Metadaten eines Knoten setzen oder eben

auslesen.

Und die Kinder eines Knotens bekommt man per GetChilder.

Eine Besonderheit ist die Sync-Operation, die mit der Leseroptimierung zusammenhängt

und die es einem erlaubt, darauf zu warten, dass alle zeitlich vorangegangenen Schreiboperationen

Teil eines Kapitels:
ZooKeeper

Presenters

Michael Eischer Michael Eischer

Zugänglich über

Offener Zugang

Dauer

00:12:13 Min

Aufnahmedatum

2021-01-19

Hochgeladen am

2021-01-19 11:09:35

Sprache

de-DE

Beschreibung der Funktionen von ZooKeeper und der Übungsaufgabe.

Einbetten
Wordpress FAU Plugin
iFrame
Teilen