Zurück zur Übersicht

Begriff

Three-Phase Commit (3PC)

Distributed Systems Database S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Das Problem von Two-Phase Commit (2PC): Wenn der Koordinator (der Boss) in Phase 2 abstürzt, nachdem er "Prepare" gesendet hat, hängen alle Datenbanken (Blockierung). Sie wissen nicht: "Soll ich Committen oder Aborten?" Three-Phase Commit fügt eine dritte Phase ein ("Pre-Commit").

  1. CanCommit? (Alle sagen Ja).
  2. PreCommit: "Achtung, wir werden gleich committen! Wenn ich (Koordinator) sterbe, geht davon aus, dass wir es tun werden."
  3. DoCommit: "Jetzt macht es wirklich." Dadurch können die Teilnehmer, wenn der Koordinator stirbt, untereinander reden ("Hat einer von euch PreCommit bekommen?") und das Problem lösen, ohne ewig zu warten. Klingt toll, aber: Bei Netzwerk-Partitionen (Split Brain) funktioniert es immer noch nicht. Deshalb nutzt es in der Praxis niemand. (Stattdessen Paxos/Raft).

Merksatz: Ein theoretisches Erweiterungsprotokoll von 2PC, das durch eine zusätzliche Phase ("Pre-Commit") das Blockierungsproblem bei Koordinator-Ausfall lösen soll, jedoch anfällig für Netzwerkpartitionen bleibt.


Quick-Check

  1. Warum Pre-Commit?
    Als "Point of no Return". Wenn einer Pre-Commit hat, wissen alle anderen: "Wir können gefahrlos weitermachen, auch ohne Chef."
  2. Warum gescheitert?
    Weil Netzwerkpartitionen existieren. Wenn der Koordinator lebt, aber nicht erreichbar ist, treffen 3PC-Nodes falsche Entscheidungen.
  3. Alternative?
    Paxos. Paxos ist wie 3PC, aber es braucht nur eine Mehrheit ($N/2+1$). 3PC braucht alle ($N$).