2 - Aufgabe 5: Replikation [ID:34066]
50 von 227 angezeigt

Hallo zusammen, in diesem Video werden wir einen Blick auf die Übungsaufgabe werfen,

in der eine einfache Anwendung mit Hilfe von Raft repliziert werden soll.

Und zwar wollen wir dafür einen einfachen Zählerdienst nutzen, der einen Zähler bereitstellt,

den ein Client dann auf Wunsch incrementieren und auslesen kann.

Der Zähler sollte mit Hilfe des Protokolls Raft aktiv repliziert werden, damit die Anwendung

dann auch Replikatausfälle trafierern kann.

Die Anwendung und der Client sind dabei bereits komplett vorgegeben und für das Raft-Protokoll

gibt es einen Codegerüst.

Der grundlegende Teil der Aufgabe besteht zum einen darin, die Anführerwahl von Raft

zu implementieren.

Der so gewählte Anführer ist dann für das konsistente Replizieren von Anfragen zuständig,

sodass am Ende alle Client-Anfragen auch auf allen Replikaten landen.

Die Anfragen werden dann ausgeführt und der Client bekommt eine Antwort.

In der erweiterten Variante der Übungen sollen auch noch Sicherungspunkte zwischen Replikaten

übertragen werden können.

Mit der Zeit sammelt sich nämlich auf den Replikaten ein immer größer werdendes Log

aus Anfragen an.

Dieses Log soll jetzt mit Hilfe von Sicherungspunkten gekürzt werden.

Zusätzlich erlauben es die Sicherungspunkte auch effizient den aktuellen Zustand der Anwendung

zwischen Replikaten zu übertragen und so andere Replikate auf den aktuellen Stand zu

bringen.

Das ist besonders dann interessant, wenn zum Beispiel ein Replikat nach einem Ausfall seinen

kompletten Zustand verloren hat.

Für die Interaktion zwischen der vorgegebenen Zähleranwendung und dem zu implementierenden

Raft-Protokoll gibt es folgende Schnittstellen.

Beim Starten ruft der Counter-Server zum Initialisieren die Init-Methode des Raft-Protokolls auf,

das dann auch eine Referenz auf den Counter-Server erhält.

Mit der Referenz kann das Raft-Protokoll dann wiederum Aufrufe am Counter-Server tätigen.

Die Init-Methode soll dabei dann auch die Kommunikation zwischen den Replikaten aufsetzen

und ein Protokollsread starten, in dem das Raft-Protokoll dann läuft.

Dazu erzähle ich gleich auch noch etwas mehr.

Dann gibt es noch eine Order-Request-Methode, mit der das Protokoll von der Anwendung Anfragen

zum Replizieren übergeben bekommt.

Auf Seiten des Counter-Servers gibt es zum einen die Status-Methode, mit der das Protokoll

den Counter-Server informiert, in welche Rolle dieses Raft-Replikat hat, also beispielsweise

ob es Leader oder Follower ist.

Zusätzlich enthält der Aufruf die ID des aktuellen Anführers, damit die Anwendung

den Client auch immer zum tatsächlichen Anführer-Replikat weitergeleitet kann, falls

der Client eben ein anderes Replikat kontaktiert hatte.

Das Gegenstück zum vorhin erwähnten Order-Request ist dann die Apply-Request-Methode.

Wenn die Anfrage erfolgreich repliziert wurde, dann sollte dabei entstandene Log-Eintrag

mit Hilfe der Apply-Request-Methode an die Anwendung übergeben werden, die dann die

Anfrage ausführen kann und dafür sorgt, dass der Client seine Antwort bekommt.

In der erweiterten Variante der Übungen sind dann noch die Methoden zum Erzeugen von Snapshots

und zum Wiedereinspielen in die Anwendung relevant.

Create-Snapshot erzeugt dabei eine Kopie des aktuellen Anwendungszustands und Apply-Snapshot

spielt diesen Zustand wieder in die Anwendung ein.

Als nächstes wollen wir uns mal genauer anschauen, was alles passiert, um eine Anfrage zu replizieren.

Ganz grundlegend brauchen wir zuerst eine Möglichkeit, um zwischen den Replikaten zu

kommunizieren.

Teil einer Videoserie :
Teil eines Kapitels:
Replikation

Presenters

Michael Eischer Michael Eischer

Zugänglich über

Offener Zugang

Dauer

00:14:31 Min

Aufnahmedatum

2021-06-09

Hochgeladen am

2021-06-09 17:08:05

Sprache

de-DE

Überblick und Hinweise zu Aufgabe 5: Replikation

Einbetten
Wordpress FAU Plugin
iFrame
Teilen