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