Встречается на собеседованиях • сегодня

Что такое паттерн 2PC

2PC (Two-Phase Commit) — это протокол распределённых транзакций, гарантирующий атомарность операций в распределённых системах. Он состоит из двух фаз:

  1. Фаза подготовки — координатор запрашивает у всех участников (нод) подтверждение готовности выполнить транзакцию. Участники отвечают "готов" или "не готов".
  2. Фаза фиксации — если все участники готовы, координатор отправляет команду "зафиксировать". Если хотя бы один отказал, отправляется "откатить".

Пример на 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.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы