Назад к вопросам
СБЕР
Senior
3
Расскажите про 2PC и 3PC — чем отличаются?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
2PC (Two-Phase Commit) и 3PC (Three-Phase Commit) — это протоколы распределённого коммита, используемые для обеспечения согласованности транзакций в распределённых системах.
2PC (Двухфазный коммит):
- Фаза 1 (Prepare): координатор отправляет участникам запрос подготовиться к коммиту.
- Участники отвечают, готовы ли они зафиксировать транзакцию.
- Фаза 2 (Commit): если все участники готовы, координатор посылает команду commit, иначе abort.
Проблемы 2PC:
- Блокирующий протокол: если координатор падает после фазы 1, участники могут остаться в неопределённом состоянии, ожидая решения.
3PC (Трёхфазный коммит):
- Добавляет промежуточную фазу между prepare и commit — pre-commit.
- Фазы:
- CanCommit? — запрос готовности.
- PreCommit — уведомление о предстоящем коммите, участники блокируют ресурсы.
- DoCommit — окончательное подтверждение коммита.
Преимущество 3PC — уменьшение времени блокировки и возможность избежать состояния блокировки при сбоях координатора.
В целом, 3PC более устойчив к сбоям, но сложнее и требует больше сообщений, поэтому 2PC чаще используется, а 3PC — в системах с высокими требованиями к отказоустойчивости.