Um sich davon zu überzeugen, dass die Komplikationen von Standard-Algorithmen wie Paxos und Raft notwendig sind, muss man verstehen, warum einfachere Lösungen nicht zufriedenstellend sind. Nehmen wir an, dass, um Konsens WRT einen Strom von Ereignissen in einem Cluster von N Maschinen zu erreichen (dh implementieren eine replizierte Zeit wachsenden log), der folgende Algorithmus vorgeschlagen:Würde dieser einfache Konsensus-Algorithmus funktionieren?
Immer wenn eine Maschine will anhängen eine Nachricht an das Protokoll, es sendet das Tupel
(msg, rnd, prev)
, wobeimsg
die Nachricht ist,rnd
ist eine Zufallszahl undprev
ist die ID der letzten Nachricht im Protokoll.Wenn ein Computer ein Tupel empfängt, fügt er
msg
als untergeordnetes Element vonprev
ein und bildet einen Baum.Wenn ein Knoten mehr als ein Kind hat, wird nur das mit dem höchsten
rnd
als gültig betrachtet; Der Pfad gültiger Nachrichten durch den Baum ist die Hauptkette.Wenn eine Nachricht Teil der Hauptkette ist und alt genug ist, gilt sie als entschieden/endgültig.
Wenn eine Maschine eine Nachricht zu verfassen versucht und nach einiger Zeit ist es nicht auf der Hauptkette, das ein anderes Gerät eine Nachricht an ungefähr zur gleichen Zeit ausgestrahlt bedeutet, so dass Sie-Sendung wieder, bis es ist da.
Sieht einfach, effizient und widerstandsfähig gegen Abstürze. Würde dieser Algorithmus funktionieren?
Wenn Sie "alt genug" nicht präziser machen können, handelt es sich eher um einen Konsistenzalgorithmus wie die Klatsch-basierten Protokolle als Paxos, bei dem ein Prozess, der Bestätigungen von einer Mehrheit der Gruppe empfängt, wissen kann, dass ihr Schreiben fortbesteht. Klatschbasierte Algorithmen sind tendenziell einfacher als Paxos. Eine Websuche findet https://infoscience.epfl.ch/record/89531/files/paper.pdf, die mit einem sehr einfachen klatschbasierten Protokoll beginnt und es modifiziert, um es schrittweise zu verbessern. – mcdowella
Stimmen Sie mit @mcdowella überein. "Alt genug" könnte die Bitcoin-Ledgersemantik übernehmen: die mit der längsten Kette, aber das ist kein * wirklich * Konsens und ist offen für Angriffe in einer offenen Umgebung. –