GH GambleHub

Algorithmen des Konsenses

1) Was ist Konsens und warum ist er notwendig?

Konsens - Aushandlung des gleichen Werts/der gleichen Wertfolge zwischen mehreren Knoten bei Ausfällen und Verzögerungen. Traditionell wird das Problem der Zustandsreplikation (State Machine Replication, SMR) gelöst: Es gibt eine deterministische Zustandsmaschine und eine allgemeine Reihenfolge der Operationen.

Unterscheiden Sie:
  • Consensus (SMR): eine einzige Gesamtreihenfolge von Befehlen → linearer Speicher/Registrierung, Cluster-Metadaten, Transaktionskoordinatoren.
  • Quorum-Operationen ohne totale Ordnung (Dynamo-like, CRDT): ermöglichen Divergenz und anschließende Fusion; ersetzen keinen Konsens, wo eine globale Serialisierung notwendig ist.

2) Zeit- und Fehlermodell

2. 1 Zeitmodell

Asynchrones Netzwerk: Verzögerungen sind unbegrenzt; Das FLP-Theorem ⇒ Es ist unmöglich, sowohl Sicherheit als auch Gelassenheit ohne zusätzliche Annahmen zu garantieren.
Teilsynchron (oft in der Praxis): Nach einem unbekannten T „verhält“ sich das System synchron - darauf verlassen sich die meisten Algorithmen (Raft, Paxos).
Synchron: starre Zeitlimits für Kanäle (selten in der Produktion, außer bei speziellen Netzwerken/PTPs).

2. 2 Fehlermodell

Crash-fault tolerant (CFT): Knoten können fallen/hängen, verhalten sich aber nicht böswillig.
Byzantine-fault tolerant (BFT): Knoten können lügen/Nachrichten fälschen. Es erfordert 3f + 1 Knoten für die Toleranz gegenüber f byzantinischen.

3) Eigenschaften des Konsenses

Sicherheit: Konsistenz (zwei korrekte Knoten lösen keine unterschiedlichen Werte).
Lebendigkeit: Wenn das Netzwerk „gesund“ ist, ist die Lösung erreicht.
Linearisierung (Linearität): Operationen werden als atomar in einer einzigen Reihenfolge „gesehen“.
Langlebigkeit: Getroffene Entscheidungen werden nicht zurückgenommen (Schutz durch Log/Quorum).

4) Quoren, Mehrheiten und Schnittmengen

In der CFT-Welt der Klassiker: Quorum> N/2. Die Aufzeichnungen und die Wahl des Führers nutzen die Schnittmenge der Quoren, so dass die beiden „gültigen“ Operationen nicht kollidieren.
In der BFT-Welt: Die Quoren 2f + 1 von 3f + 1 bieten eine Kreuzung von mindestens f + 1 ehrlichen Knoten.

Durchdringungsregel: Jedes Quorum muss einen ≥1 gemeinsamen ehrlichen Knoten (CFT) oder ≥f+1 (BFT) haben.

5) Statusreplikation (Protokoll + Anwendung)

Die Befehle werden zu einem Protokoll mit IDs (Index/Epoche) zusammengefasst. Das Prinzip: „erst den Log-Eintrag (commit) abstimmen, dann deterministisch auf den Zustand anwenden“. Um das Wachstum zu kontrollieren, tun sie:
  • Schnappschüsse (Zustandsschnitt, nach dem frühe Einträge gelöscht/kompiliert werden können).
  • Zeitschriftenkomposition und Logtriim.
  • Determinismus-Checks (gleiche Code-/Config-Version).

6) Führungs- und Nicht-Leadership-Systeme

Leadership (Raft, Multi-Paxos, ZAB): Ein Leader serialisiert Einträge → einfacher mental und operativ, besser latency auf einem stabilen Leader.
Leaderless/Multilider (EPaxos, Caesar): mehr Parallelität und Toleranz gegenüber dem Führer, aber schwieriger Umsetzung und Konflikt-Lösung; Gewinne sind bei kleinen Konflikten der Teams sichtbar.

7) Klassische CFT-Algorithmen

7. 1 Paxos/Multi-Paxos (und Praxis)

Die Idee: zwei Phasen (prepare/propose), Akzeptorversprechen, Mehrheitsbeschlüsse. Multi-Paxos hinterlässt einen „stabilen Führer“ und verwandelt den Betrieb nach dem „Aufwärmen“ in einen Ein-Runden-Betrieb (für Neuaufnahmen).

Besonderheiten:
  • Ein flexibles, aber schwer umsetzbares Modell.
  • Re-Konfigurationen durch spezielle Einträge (joint consensus).
  • In der Praxis - Bibliotheken/Engines (Chubby/Spanner-Generation).

7. 2 Raft

Zerlegt für Lernfähigkeit: Leader-Auswahl, Logreplikation, Re-Konfiguration.

Wahl: gelegentliche Zeiträume, Abstimmung über die Thermen; ein Führer pro Amtszeit.
AppendEntries: Leader streamt Einträge, überwacht Präfixübereinstimmung (Index/Term), Commit durch Mehrheitsfixierung.
Read-path: lease-reads (mit einem starken Leader) oder read-index für lineare Lesungen.
Reconfig: „joint configuration“ (joint) - Knoten stimmen in zwei Clustern vor dem Übergang ab.

Vorteile: einfacher zu entwickeln/debag, starke Invarianten der Ordnung. Nachteile: Der Führer ist ein Druckpunkt.

7. 3 ZAB (ZooKeeper Atomic Broadcast) / Viewstamped Replication (VRR)

ZAB: Leader sendet Transaktionen, Wiederherstellungsphase, zxid (Epoche + Index).
VRR: „views“ (Ansichten) mit primärem Replikat, ähnlich wie Multi-Paxos im Geiste.

8) Nichtlider/Multilider CFTs

8. 1 EPaxos

Kein ständiger Anführer: Jeder Knoten kann ein Team initiieren.
Konfliktbefehle erhalten eine Teilreihenfolge; konfliktfrei - Commit in 1-2 RTT lokal.
Gewinn an Geo-Verteilung bei geringem Konflikt, aber komplexen Abhängigkeits-/Graph-Codes.

8. 2 Caesar, Mencius

Variationen, die Latenz/Balancing und Betrieb im WAN optimieren.

9) BFT-Algorithmen und PoS-Familie

9. 1 PBFT (Practical BFT)

Drei Phasen (pre-prepare/prepare/commit), erfordert 3f + 1 Knoten.
Geringe Latenz auf lokalen Netzwerken, Straßen durch mehrstufige und O (N ²) Nachrichten.

9. 2 Tendermint (BFT-PoS-Stil)

Runden mit Proposal und zwei Abstimmungen (prevote/precommit).
Deterministischer Vorschlagsvalidierer, Timeouts, partielle Synchronität.
Gut für permissioned/PoS-Netzwerke mit Dutzenden/Hunderten von Validatoren.

9. 3 HotStuff (und Derivate)

Das dreiphasige Schema wurde in „Pakete“ mit Quorum-Zertifikaten (QC) vereinheitlicht.
Die lineare Komplexität der Kommunikation, die Unterstützung von Paketierung und paralleler Paipline, ist praktisch für Implementierungen in Blockchains (z. B. Diem/Move-Ökosystem).
Mit Schwellensignaturen (threshold signatures) wird der Datenverkehr reduziert.

9. 4 PoW/kumulativer Konsens (in Kürze)

Nicht BFT im engeren Sinne, sondern probabilistische Konvergenz (die Kette mit der größten Arbeit). Vorteile: Einfachheit/Offenheit; Nachteile: Energie, ~ Sekunden-Minuten bis zur Finalität.

10) Lesungen: linear, sequentiell und zwischengespeichert

Lineare Lesungen: Leader mit aktiver Lease oder über Read-Index (Raft) → Quorum-Bestätigung.
Konsistent: Kann von jedem Knoten gelesen werden, jedoch ohne Frischegarantien.
Follower liest: zulässig bei schwachen Anforderungen; für Caches - ok.

11) Re-Konfiguration (Änderung der Clusterzusammensetzung)

Es erfordert zwei überlappende Konfigurationen (joint consensus): Alle Commits durchlaufen die Quoren beider Konfigurationen → ohne „Löcher“.
Eins nach dem anderen hinzufügen/entfernen, Quorumgröße beachten.
Die Übertragung der Führung (Leadership Transfer) reduziert Pausen.

12) Leistung und Tuning

12. 1 Verzögerungen

Leadership-Algorithmen: 1 RTT pro Aufnahme (mit stabilem Leader) + Replikation.
Geo-Distribution: WAN RTT dominiert → Verwenden Sie lokale Regionen + regionale Replikation oder EPaxos/HotStuff-Ansätze.

12. 2 Durchsatz

Batching (Gruppierung von Befehlen), parallele AppendEntries, Log-Page-Cache, parallele Anwendung (wenn Operationen geschaltet werden).
Laufwerke: NVMe/Log auf separatem Gerät,'O _ DIRECT '/AIO, großes' fsync '-Interview mit SLA-Einschränkungen (Durability/Latency-Kompromiss).

12. 3 Schwänze p99

Vermeiden Sie heiße Knoten (der Anführer ist ständig allein): periodische Rotation oder Read-Offload auf Follower.
Überwachen Sie GC-Pausen (JVM/Go), CPU-Pins, NUMA.

13) Geographie und Topologien

1 Region, 3 Zonen: klassischer CFT-Cluster (N = 3/5).
2 Regionen: vermeiden - kein verlässliches Quorum bei 1-1 Trennung.
3 + Regionen: führend in der „Mitte“ oder führerlose Algorithmen; Regionale Proxies/lokale Fronten mit asynchronem Log sind möglich.

14) Praktische Fragen der Ausbeutung

14. 1 Schnappschüsse und Erholung

Schwellenwert für Protokollgröße/Anzahl der Transaktionen.
Übertragung des Schnappschusses an neue Knoten; Überprüfung der Prüfsummen.

14. 2 Überwachung

Führung: Wer die Führungskraft ist, wie viele Begriffe (term/epoch) gewechselt haben.
Лаги: `append_latency`, `commit_index - applied_index`.

Quorum-Gesundheit: „Lebt die Mehrheit/2f + 1?“

Die Größe der Zeitschrift/Geschwindigkeit kompakzii, die Reihe snapschotow.
Für BFT: Stimmenanteil, Hintertür der Unterzeichner, QC-Verzögerungen.

14. 3 Sicherheit/Konsistenz des Codes

Protokollversionsfähigkeit auf Draht, Migration mit Protokollkompatibilität.
Fencing-Token auf externe Effekte (siehe "Distributed Locks'): Führungsbegriff (term) an CRON/Jobs übertragen.

15) Anti-Muster

Setzen Sie einen Konsens „um der Mode willen“, wo ein DBMS oder Quorumlesungen ohne Serialisierung ausreichen.
Mischen Sie CP und AP ohne klare Grenzen (CAP) → unvorhersehbare UX.
Neubewertung von PoW/PoS für Unternehmensaufgaben mit Dutzenden von Knoten (schwierig/teuer).
Ignorieren Sie die Re-Konfiguration und die „sich überschneidenden Quoren“, wenn sich die Zusammensetzung ändert.
Mangel an Read-Barrier (Lease/Read-Index) → „schmutzige“ Lesungen.
2-Knoten-Cluster ausführen (keine Mehrheit).
Disketten- und fsync-Unterschätzung: „Alles fliegt im Speicher“ - bis zum ersten Neustart.

16) Checkliste der Wahl

1. Fehlermodell: CFT (Crashs) oder BFT (böswillig)?
2. Geographie: Eine Region/drei Zonen oder WAN? RTT entscheidet.
3. Semantik der Lesungen: Braucht man lineare Lesungen? Lease/read-index/follower-rides.
4. Last: Erwartungen nach p50/p99, throughput; Wir brauchen Multi-Leadership.
5. Betriebsschwierigkeit: Bibliothek/fertige Engine (etcd/ZK/Consul/Raft-libs) gegen eigene Implementierung.
6. Rekonfiguration: Häufig? Wir brauchen einen gemeinsamen Konsens und Instrumente der Migration.
7. Integrationen: Externe Nebenwirkungen - gibt es Fencing nach epoch/term?
8. Sicherheit: Knotenauthentifizierung, Kanalverschlüsselung, Protokollversionskontrolle.
9. Test-Playbooks: Partition, GC-Stop, Kill Leader, Slow Disk, Clock Skew.
10. Beobachtbarkeit: Leader/Lags/Log-Metriken und Alerts werden angepasst.

17) Mini-Handbuch: Wann was zu nehmen ist

etcd/Raft-Cluster für DC-interne Konfigurationen/Sperren/Koordination.
ZooKeeper/ZAB für Dienste, die bereits an ZK gebunden sind (alte Stacks, Warteschlangen, Führung).
Multi-Paxos durch fertigen Service/Bibliothek in hochspezialisierten Systemen.
EPaxos bei Geo-Verteilung und geringer Konflikte der Befehle.
Tendermint/HotStuff für permissioned networks/PoS-Leier mit Dutzenden bis Hunderten von Validatoren und Finalitätsanforderungen.
Dynamo-like/CRDTs, wenn kein Konsens erforderlich ist, sondern Verfügbarkeit/Skalierung mit anschließender Fusion wichtig ist.

18) Beispiele für Schnittstellen (Pseudo)

18. 1 Commit-Aufnahme (Raft-Stil)

pseudo client -> leader: Propose(cmd)
leader. appendLog(cmd)
leader. replicateToQuorum()
if quorum_acked:
leader. commit(index)
leader. apply(index)
leader. reply(client, ok)

18. 2 Read-Index für lineares Lesen (Raft)

pseudo client -> any: LinearizableRead node -> leader: ReadIndex?
leader -> quorum: Heartbeat (barrier)
leader -> node: ReadIndex=commit_index node. wait_until(applied_index >= ReadIndex)
node. reply(client, state_at(ReadIndex))

18. 3 Gemeinsame Konfiguration

pseudo old_conf + new_conf # quorums must intersect commit (entries under joint)
switch_to(new_conf)

18. 4 BFT (HotStuff-approximiert)

pseudo propose(block)
collect votes -> QC lock on highest QC commit when have consecutive QCs across phases

19) FAQ

F: Warum nicht zwei Knoten und einen Tie-Breaker verwenden?
A: Zwei Knoten ohne einen dritten Schiedsrichter geben kein Quorum bei der Trennung. Sie benötigen ≥3 (CFT) oder 3f + 1 (BFT).

F: Warum ist Raft „einfacher“ Paxos?
A: Klare Zerlegung, verständliche Invarianten von Log und Konfiguration; leichter umzusetzen und zu begleiten.

Q: Wie man schnell liest, ohne den Führer zu belasten?
A: Follower-reads (sequentiell) für unkritische oder lease-reads/read-index für lineare; zwischenspeichern.

F: Was tötet p99?
A: WAN-RTT, Scheibe fsync, GC-Füße, überhitzter Führer, große Schnappschüsse in der „Hauptverkehrszeit“.

F: Ist ein Konsens für den Cache/das Verzeichnis erforderlich?
A: Wenn die tatsächliche Consistency ausreicht, nicht. Wenn transaktionale Invarianten erforderlich sind, ja.

20) Ergebnisse

Konsens ist ein Instrument für strikte Kohärenz und Ordnung. Wählen Sie einen Algorithmus basierend auf dem Fehlermodell und der Geographie; Stellen Sie Quorumschnittpunkte, korrekte Re-Konfiguration, lineare Lesungen, wo es kritisch ist, und Beobachtbarkeit zur Verfügung. Vergessen Sie nicht das Fencing für externe Effekte, Snap-Shots und die Disziplin von Zeitschriften. Dann ist die Replikation des Status vorhersehbar und die Vorfälle sind selten und verständlich.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.