Что такое двухфазный коммит (two-phase commit)?
Уровень: Senior
Ответ
Это протокол распределенных транзакций, гарантирующий, что транзакция на нескольких узлах завершится атомарно (либо везде зафиксируется, либо везде откатится). Первая фаза – Prepare: координатор рассылает всем участникам запрос подготовиться к коммиту; каждый участник пытается залогировать свои изменения и отвечает «готов» или «отказ». Если хотя бы один сообщает отказ, координатор шлет всем ROLLBACK (откат). Если все готовы, начинается вторая фаза – Commit: координатор посылает команду COMMIT всем участникам. Так все узлы либо фиксируют, либо откатывают изменения синхронно.