Hermes: Low Tail-Latency Via Prefix Consensus
Hermes ist ein zweiründiges, rotierendes Leader-BFT-Protokoll für Prozesse, das durch die Nutzung von Präfix-Konsens zur Finalisierung des schwersten gemeinsamen Präfixes aus beliebigen Stimmen Latenzspitzen durch langsame oder abgestürzte Leader eliminiert und dadurch den Fortschritt auch dann sicherstellt, wenn Views ablaufen.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich eine Gruppe von Freunden vor, die versuchen, einen Film auszusuchen, aber sie sind über die ganze Welt verstreut, einige haben eine instabile Internetverbindung und ein paar intrigante Freunde versuchen, die Entscheidung zu sabotieren, indem sie gefälschte Links senden oder so tun, als wären sie offline. Dies ist die Welt des Byzantine Fault Tolerant (BFT) Konsens. In der Informatik ist dies die Art und Weise, wie ein Netzwerk von Computern einer einzigen Wahrheit zustimmt – wie etwa der Reihenfolge von Transaktionen in einer Blockchain – ohne einen einzelnen zentralen Chef zu benötigen. Das Ziel ist es, schnell eine Einigung zu erzielen (geringe Latenz), selbst wenn einige Computer abstürzen oder bösartig agieren.
Jahrelang verließen sich diese Systeme auf einen „Leader“ (Leiter), der den nächsten Schritt vorschlägt. Wenn der Leader schnell und ehrlich ist, stimmt die Gruppe schnell überein. Aber wenn der Leader langsam ist oder abstürzt, muss die ganze Gruppe warten, bis ein Timer abläuft, den Leader aufgibt und einen neuen wählt. Dies erzeugt ein schmerzhaftes Dilemma: Setzt man den Timer lang an, wartet man ewig auf einen defekten Leader; setzt man ihn kurz an, verschwendet man Zeit damit, Leader aufzuge-geben, die nur ein wenig langsam waren. Dieses „Timeout-Dilemma“ ist der Flaschenhals, der das Ende des Systems verlangsamt und dafür sorgt, dass die langsamsten Anfragen ewig brauchen, um abgeschlossen zu werden.
Dieses Paper stellt Hermes vor, ein neues Protokoll, das genau dieses Problem lösen soll. Anstatt aufzugeben, wenn ein Leader langsam ist, lässt Hermes die Gruppe die Arbeit abschließen, die sie konnte, selbst wenn der Leader ausfällt. Es verwandelt ein verschwendetes Timeout in eine produktive Entscheidung und stellt sicher, dass das System, egal was passiert, vorankommt, ohne den bereits gemachten Fortschritt zu verlieren.
Das Problem: Die „Timeout-Falle“
Stellen Sie sich ein Staffettenrennen vor, bei dem der Kapitän des Teams (der Leader) den Stab an den nächsten Läufer übergeben soll. Wenn der Kapitän schnell ist, läuft das Rennen reibungslos. Aber wenn der Kapitän stolpert oder den Stab fallen lässt, muss das ganze Team warten, bis ein Schiedsrichter die Pfeife ertönen lässt (das Timeout), bevor sie einen neuen Kapitän wählen und von vorne beginnen können.
In traditionellen Systemen ist diese Pfeife ein Glücksspiel. Wenn der Schiedsrichter zu früh pfeift, unterbricht er vielleicht einen Kapitän, der nur etwas langsam lief, aber durchgekommen wäre. Wenn sie zu lange warten, sitzt das Team ewig untätig herum, während ein kaputter Kapitän versucht, sich zu erholen. In beiden Fällen ist die gewonnene Zeit „tote Zeit“ – es wird kein Fortschritt gemacht und das Rennen stockt. Dies ist das „Tail-Latency“-Problem: Die extremsten Szenarien ziehen das gesamte System nach unten.
Die Lösung: Hermes und der „Gemeinsame Nenner“
Hermes ändert die Regeln des Spiels. Anstatt einen langsamen Leader als Totalausfall zu betrachten, betrachtet Hermes die Teilzustimmung der Gruppe als einen Sieg.
So funktioniert es mit einer kreativen Analogie: Stellen Sie sich vor, das Team versucht, einen langen Turm aus Blöcken zu bauen.
- Der alte Weg: Der Leader platziert einen Block. Alle warten. Wenn der Leader stoppt, wartet das Team auf das Timeout, wirft dann den ganzen Turm weg und beginnt mit einem neuen Leader einen neuen Aufbau.
- Der Hermes-Weg: Der Leader beginnt, Blöcke zu platzieren, aber jeder beginnt gleichzeitig, auch seine eigenen Blöcke zu platzieren. Wenn der Leader schnell ist, baut das Team den Turm des Leaders perfekt auf. Wenn der Leader stecken bleibt, wirft das Team den Turm nicht weg. Stattdessen schauen sie sich alle Blöcke an, die alle platziert haben, finden den längsten Abschnitt, in dem alle über die Reihenfolge der Blöcke übereinstimmen, und erklären diesen Abschnitt für „abgeschlossen“.
Dies ist die zentrale Innovation: Prefix-Konsens. In der Vergangenheit wurden die Stimmen als Uneinigkeit gewertet und verworfen, wenn zwei Personen leicht unterschiedliche Türme stimmten. Hermes sagt: „Warten Sie, sie stimmen bei den unteren 90 % des Turms überein! Lassen Sie uns diesen Teil festlegen und weitermachen.“
Wie Hermes funktioniert: Der Zwei-Runden-Tanz
Hermes operiert in „Views“ (Ansichten/Runden), wobei jede Runde einen designierten Leader hat. Es nutzt einen klugen Zwei-Schritte-Tanz:
- Runde 1 (Der Vorschlag): Jeder sendet seine eigene Idee darüber aus, wie der nächste Teil des Turms aussehen sollte. Die Idee des Leaders ist dabei nur eine von vielen.
- Runde 2 (Die Abstimmung):
- Wenn der Leader schnell ist: Jeder sieht den Vorschlag des Leaders, stimmt ihm zu und stimmt dafür ab. Der Turm wächst um den vollen Block des Leaders in nur zwei Nachrichtenverzögerungen (2δ).
- Wenn der Leader langsam ist oder abstürzt: Die Zeit läuft ab. Anstatt abzustimmen, um die Runde zu „abbrechen“, stimmen alle für die bestmögliche Übereinstimmung, die sie unter den erhaltenen Vorschlägen finden können. Sie suchen nach dem „Heaviest Common Prefix“ (HCP) – der längsten Sequenz von Blöcken, über die sich alle einig sind, selbst wenn ihre Vorschläge am Ende divergieren.
Das bedeutet, dass die Gruppe selbst dann die View nicht verliert, wenn der Leader ausfällt. Sie finalisieren den gemeinsamen Teil des Turms und beginnen sofort mit der nächsten Runde. Der „Timeout“-Pfad, der früher ein Sackgasse war, liefert nun ein Ergebnis.
Die Magie von „Präfixen“ und „Skips“
Um dies mit mehreren Datenbahnen (wie einer Autobahn mit vielen Fahrspuren) zu ermöglichen, verwendet Hermes eine spezielle Kodierung namens parent-relative delta tipcuts.
Denken Sie an ein „Choose Your Own Adventure“-Buch, in dem jede Seite auf die vorherige Bezug nimmt. Wenn einer Fahrspur ein Auto (ein Block) fehlt, sagt Hermes nicht „Fehler“. Es markiert diese Stelle explizit als „übersprungen“ (skipped) und bewegt sich zum nächsten Auto. Dies ermöglicht es dem System, verschiedene Vorschläge zu vergleichen, selbst wenn ihnen unterschiedliche Teile fehlen. Es ist wie der Vergleich zweier Geschichten: Selbst wenn eine Geschichte einen Absatz überspringt und die andere ihn enthält, können sie sich immer noch über den Anfang und das Ende einig sein, und das System verankert diese Übereinstimmung.
Die Ergebnisse: Geschwindigkeit und Sicherheit
Das Paper beweist mathematisch, dass Hermes sicher (keine zwei ehrlichen Teilnehmer werden jemals über den finalisierten Teil uneins sein) und lebendig (das System wird immer in Bewegung bleiben) ist.
- Der gute Fall: Wenn der Leader ehrlich und schnell ist, ist Hermes genauso schnell wie die besten bestehenden Systeme und finalisiert in 2δ (zwei Nachrichtenverzögerungen).
- Der schlechte Fall: Wenn der Leader langsam ist oder abstürzt, finalisiert Hermes die gemeinsame Übereinstimmung in 2∆ + δ (wobei ∆ das Timeout und δ die Netzwerkverzögerung ist). Entscheidend ist, dass dies schneller ist als der alte Weg, bei dem man auf einen vollständigen View-Wechsel warten musste, da es die „verschwendete“ Zeit des Verwerfens der View vermeidet.
Die Autoren zeigen, dass Hermes durch die Verwendung von Erasure Coding (einer Methode, Daten in Teile zu zerlegen, sodass sie rekonstruiert werden können, selbst wenn einige Teile verloren gehen) die Kommunikationskosten niedrig hält, selbst wenn mit vielen Datenbahnen gearbeitet wird.
Warum das wichtig ist
Hermes löst das „Timeout-Dilemma“, indem es das Timeout selbst produktiv macht. Es verwandelt einen Moment des Scheiterns in einen Moment des Fortschritts. Anstatt zu fragen: „Hat der Leader es geschafft?“ und abzuwarten, fragt Hermes: „Worüber sind wir uns alle einig?“ und macht weiter.
Für einen neugierigen Teenager gedacht: Es ist wie ein Gruppenchat, in dem alle versuchen, einen Plan zu vereinbaren. Wenn die Person, die normalerweise den Plan vorschlägt, nicht antwortet, ist der alte Weg, auf sie zu warten oder einen neuen Chat mit einem neuen Leiter zu beginnen. Hermes ist wie zu sagen: „Okay, sie hat nicht geantwortet, aber schaut euch mal an, welche Ideen wir gesendet haben. Wir sind uns über die ersten drei Schritte einig. Lass uns die festlegen und mit der Planung für Schritt vier beginnen.“ Es ist eine intelligentere, resilientere Art, die Gruppe in Bewegung zu halten, egal wer den Ball fallen lässt.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.