Встречается на собеседованиях • сегодня
Что такое паттерн 2PC
2PC (Two-Phase Commit) — это протокол распределённых транзакций, гарантирующий атомарность операций в распределённых системах. Он состоит из двух фаз:
- Фаза подготовки — координатор запрашивает у всех участников (нод) подтверждение готовности выполнить транзакцию. Участники отвечают "готов" или "не готов".
- Фаза фиксации — если все участники готовы, координатор отправляет команду "зафиксировать". Если хотя бы один отказал, отправляется "откатить".
Пример на Python (упрощённый):
python
class Coordinator:
def execute_transaction(self, participants):
# Phase 1: Prepare
votes = [p.prepare() for p in participants]
if all(votes):
# Phase 2: Commit
for p in participants:
p.commit()
else:
# Rollback
for p in participants:
p.rollback()Проблемы 2PC:
- Блокировка при отказе координатора
- Низкая производительность из-за синхронного ожидания
- Не устойчив к частичным отказам сети
Используется в БД (PostgreSQL XA), message brokers (Kafka транзакции). Альтернативы — 3PC, Saga.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы