Дві фази
- Prepare (голосування) — координатор надсилає Prepare всім учасникам. Кожен перевіряє, чи може виконати транзакцію, і відповідає Yes або No
- Commit/Abort — якщо всі відповіли Yes → координатор надсилає Commit. Якщо хоча б один No → Abort
Проблеми
- Blocking — якщо координатор падає після Prepare, але до Commit — учасники заблоковані в невизначеності
- Продуктивність — два раунди мережевих звернень, тримає блокування між фазами
Альтернатива
Saga Pattern — відмовляється від 2PC на користь компенсуючих транзакцій і Eventual Consistency. Більш практичний для мікросервісів.