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