Ticketing
Dokumentation

RPC-Typen

Das tag in einem Frame entscheidet über den RPC-Typ. Jede Payload ist ein openraft-Typ, serialisiert mit postcard.

tagNameAnfrage-PayloadAntwort-PayloadRolle
1VoteVoteRequestVoteResponseLeaderwahl — ein Kandidat bittet andere Knoten um ihre Stimme
2AppendEntriesAppendEntriesRequestAppendEntriesResponseLog-Replikation + Herzschlag — der Leader verbreitet replizierte Befehle an Follower
3FullSnapshotein (Vote, SnapshotMeta, snapshot_bytes)-TupelSnapshotResponseSendet den gesamten Snapshot an einen zurückgefallenen Knoten
  • Vote — stirbt der Leader, wird ein Knoten, dessen Herzschlag ausgeblieben ist, zum Kandidaten und fordert Stimmen an; der Knoten, der eine Mehrheit gewinnt, wird der neue Leader.
  • AppendEntries — der Leader trägt zu committende Sperrbefehle als Log-Einträge. Ein AppendEntries ohne Einträge ist der Herzschlag — es gibt keine separate Herzschlag-Nachricht.
  • FullSnapshot — sendet den gesamten aktuellen Zustand an einen Knoten, der zu weit zurückgefallen ist, um über das Log aufzuholen (oder gerade beigetreten ist). Wird als Ganzes, in einem einzigen Frame, ohne Streaming gesendet.

Ablauf — Wenn der Leader stirbt

Knoten A
Knoten B
Knoten C
erkennt, dass der Herzschlag des Leaders ausbleibt → wird Kandidat
Vote · fordert eine Stimme an
Vote · fordert eine Stimme an
ja
Mehrheit einschließlich sich selbst → neuer Leader
AppendEntries (keine Einträge = Herzschlag)
AppendEntries (keine Einträge = Herzschlag)
Konsens-RPC (Raft)

In dem Moment, in dem der erste Herzschlag des neu gewählten Leaders eintrifft, ist der Cluster wieder im normalen Betrieb — die Gesamtlücke beträgt üblicherweise 0,5–1 Sekunde. Den AppendEntries-Ablauf (Log-Replikation) im Normalbetrieb findest du unter Replizierte Befehle.

Begriffe

  • Log-Replikation — der Leader wandelt seine entschiedenen Befehle in ein geordnetes Log um und lässt Follower es wortgetreu übernehmen. Das Anwenden desselben Logs in derselben Reihenfolge bringt jeden Knoten in denselben Zustand.
  • Herzschlag (heartbeat) — ein periodisches "Ich lebe noch"-Signal. Bleibt es aus, schließen Follower, dass der Leader gestorben ist, und starten eine Wahl.