Raft-Konsensalgorithmus

Der Raft-Konsensalgorithmus ist ein Computeralgorithmus, der eine Zustandsmaschine auf einen Cluster von Computersystemen verteilt. Es stellt sicher, dass jeder Knoten im Cluster auch bei Fehlern dieselbe Reihe von Zustandsübergängen vereinbart. Der Algorithmus wurde als leichter verständliche Alternative zu den Paxos-Protokollen zur Fehlerbehebung entwickelt. Es verfügt über Open Source-Referenzimplementierungen wie C ++, Java und Scala.


Was ist Konsens?

Konsens ist der Prozess, bei dem mehrere Server dazu gebracht werden, sich auf einen bestimmten Wert zu einigen, basierend auf den Stimmen jedes Servers. Sobald eine Entscheidung über einen Wert getroffen wurde, ist die Entscheidung endgültig. Der festgelegte Wert muss von einem Server übermittelt werden. Dies bedeutet, dass der Konsensalgorithmus keinen eigenen Wert erstellen kann. Am einfachsten kann der Wert 0 oder 1 sein, sodass alle Server entscheiden können, ob sie etwas tun oder nicht. Konsens wird im Kontext von replizierten Zustandsmaschinen verwendet, einem mathematischen Berechnungsmodell.

Wie Raft funktioniert

Das Floß funktioniert, indem es einen Anführer im Cluster wählt. Ein Server in einem Cluster ist entweder ein Anführer oder ein Follower und kann möglicherweise ein Kandidat sein, wenn der Anführer nicht verfügbar ist. Der Leiter verwaltet die Replikation des Protokolls auf andere Server und akzeptiert Clientanforderungen. Ein Anführer führt, bis er versagt oder die Verbindung trennt. In diesem Fall wird aus den Kandidaten ein neuer Anführer ausgewählt. Der Datenfluss erfolgt in eine Richtung: vom Leiter zu anderen Servern.

Raft zerlegt den Konsens in drei unabhängige Unterprobleme:

  • Führerwahl: Wenn der aktuelle Führer ausfällt, muss ein neuer Führer gewählt werden.
  • Protokollreplikation: Durch die Replikation muss der Leiter seinen eigenen Server mit den Protokollen aller anderen Server synchronisieren.
  • Sicherheit: Kein anderer Server kann einen Protokolleintrag für einen bestimmten Index beantragen, wenn ein Server bereits einen Protokolleintrag für diesen Index festgelegt hat. Dies soll sicherstellen, dass die Protokolle konsistent sind und vom Status bearbeitet dieselben Befehle ausführen.

Raft kann für die Replikation in verteilten Systemen verwendet werden. Es baut starke und konsistente Systeme auf, ohne die Leistung oder Genauigkeit zu beeinträchtigen. Verteilte Datenbanken wie TiDB und YugabyteDB verwenden Raft für die Wahl von Führungskräften und die Datenreplikation für die Verwaltung von NewSQL-Datenbanken.


Schreibe einen Kommentar