Definition
Ein verteiltes Protokoll, das einen atomaren Commit über mehrere Teilnehmer koordiniert, indem die Entscheidung in eine Prepare-Phase (Sammeln von Commit-/Abort-Stimmen) und eine Commit-Phase (Anweisung zur Finalisierung) aufgeteilt wird, mit dem Ziel, die Atomizität einer verteilten Transaktion sicherzustellen.

Prinzip

Prinzip
Ein Koordinator fordert die Teilnehmer auf, sich vorzubereiten und ihre Bereitschaft zu persistieren; stimmen alle für Commit, weist der Koordinator zum Commit an, andernfalls zum Abort. Dauerhafte Logs und deterministische Recovery bei Teilnehmern sind erforderlich, um Korrektheit bei Ausfällen zu wahren.

Demonstration

Demonstration
Eine Transaktion aktualisiert zwei Datenbank-Shards: der Koordinator sendet Prepare an beide; jeder Shard schreibt einen 'prepared'-Eintrag und antwortet 'yes'; der Koordinator sendet dann Commit und beide Shards machen die Änderungen dauerhaft und geben Locks frei, wodurch garantiert wird, dass beide entweder committen oder beide abbrechen.

Fehlanwendung

Fehlanwendung
2PC ohne dauerhafte Logs oder ohne Behandlung des Koordinator-Ausfalls einzusetzen, zu erwarten, dass es nicht blockiert, oder es unter häufigen Partitionen ohne Verfügbarkeitsmaßnahmen zu gebrauchen — das kann zu unendlichem Blockieren oder fehlendem Fortschritt führen.

Konsequenz

Konsequenz
Starke atomare Commit-Semantik über Teilnehmer hinweg (entweder alle committen oder alle aborten) auf Kosten möglicher Blockierung und Koordinations-Overhead; es vereinfacht das Korrektheitsdenken, kann aber die Verfügbarkeit bei Ausfällen verringern.

Umkehrung

Umkehrung
Optimistische oder eventual-commit-Ansätze (z. B. eventual consistency oder Kompensation), die Verfügbarkeit und Liveness über global atomare Commits stellen und temporäre Inkonsistenzen akzeptieren.

Abgrenzung

Abgrenzung
Stellt eine atomare Entscheidung sicher, wenn Teilnehmer antworten und Zustand dauerhaft ist, garantiert aber keinen Fortschritt bei Koordinator-Ausfall (Blockierung möglich) und toleriert nicht automatisch Netzwerkpartitionen; Verbesserungen (3PC, konsensbasierte Commits) sind für nicht blockierende Garantien nötig.

Semantische Spannung

Semantische Spannung
Atomare, blockierende Koordination (2PC) versus nicht blockierende, konsensbasierte Commit-Protokolle (oder eventual consistency): Abwägungen zwischen starker Konsistenz und Verfügbarkeit/Liveness in verteilten Systemen.

Synthese

Synthese
Ein vom Koordinator gesteuerter zweistufiger Handshake — Prepare dann Commit — der Atomizität verteilter Transaktionen durch einstimmige Prepared-Stimmen und dauerhafte Protokollierung durchsetzt und dabei mögliche Blockierung und Verfügbarkeitsauswirkungen gegen globale Korrektheit eintauscht.