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

Что такое двухфазный commit

Двухфазный commit (2PC) — это протокол распределённых транзакций, обеспечивающий атомарность в распределённых системах. Состоит из двух фаз:

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

Пример с псевдокодом:

java
// Фаза 1: Подготовка
boolean allPrepared = participants.stream()
    .allMatch(p -> p.prepare(transaction));

// Фаза 2: Фиксация/Откат
if(allPrepared) {
    participants.forEach(p -> p.commit(transaction));
} else {
    participants.forEach(p -> p.rollback(transaction));
}

Проблемы: блокировки (участники ждут решения координатора), отказ координатора может привести к зависанию системы. Альтернативы — 3PC, Saga.

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

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

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

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