Почему двухфазный коммит избегают в микросервисах и где он всё-таки жив?
Двухфазный коммит даёт настоящую атомарность: координатор спрашивает участников «готовы?», и если все ответили да — рассылает команду фиксировать. Цена — блокировки, удерживаемые между фазами: пока идёт голосование и рассылка, строки заблокированы у всех участников. Хуже другое: 2PC — блокирующий протокол. Если координатор упал после голосования, участники остались в состоянии «готов» и не имеют права ни зафиксировать, ни откатить, — разбирать приходится вручную. Доступность при этом перемножается: пять участников по 99.9% дают заметно меньше. В микросервисах вместо 2PC берут сагу с компенсациями плюс outbox и идемпотентность. Живёт 2PC там, где участники под одним управлением: шардированная база, XA внутри сервера приложений, транзакции внутри кластера Kafka.