Назад к вопросам
VK
Middle
1
Как работает двухфазный коммит (2PC)?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Двухфазный коммит (2PC) — это протокол для обеспечения атомарности распределённых транзакций.
Он состоит из двух этапов:
-
Фаза подготовки (prepare): Координатор отправляет всем участникам запрос подготовиться к коммиту. Участники выполняют все необходимые проверки и операции, блокируют ресурсы, но не фиксируют изменения, и отвечают «готов» или «не готов».
-
Фаза коммита (commit/abort): Если все участники ответили «готов», координатор посылает команду коммитить изменения, иначе — откатить.
Таким образом, либо все участники фиксируют изменения, либо все откатывают, обеспечивая согласованность.
Пример упрощённой логики на Go:
// Псевдокод
func twoPhaseCommit(participants []Participant) error {
for _, p := range participants {
if !p.Prepare() {
// если кто-то не готов, откатываем
for _, p2 := range participants {
p2.Abort()
}
return errors.New("prepare failed")
}
}
for _, p := range participants {
p.Commit()
}
return nil
}