Что такое two-phase commit?

Senior
313 просмотров
AFK Offer AI

Two-phase commit (2PC) — протокол для атомарных распределённых транзакций. Фаза 1 (prepare): координатор спрашивает все участники "готовы закоммитить?". Каждый отвечает YES или NO. Фаза 2 (commit/abort): если все сказали YES — координатор шлёт COMMIT всем. Если хоть один NO — шлёт ABORT. Проблема: если координатор упал между фазами — участники зависают в неопределённости (blocking protocol). Плюс это медленно из-за двух раундов. Поэтому в микросервисах предпочитают saga pattern, а 2PC оставляют для БД.

Следующий вопрос

Как работает goroutine scheduling loop?