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

Какие знаешь подходы обработки распределенных транзакций

В Java для обработки распределенных транзакций используются:

  1. 2PC (Two-Phase Commit) - координатор сначала собирает голоса участников (prepare), затем фиксирует/откатывает (commit/rollback). Пример с JTA:
java
@Transactional
public void transfer(Account from, Account to, BigDecimal amount) {
    from.debit(amount);
    to.credit(amount);
}
  1. Saga - последовательность локальных транзакций с компенсирующими действиями. Каждый шаг независим, при ошибке выполняются компенсации.

  2. TCC (Try-Confirm-Cancel) - аналогично Saga, но с явными фазами:

    • Try: резервирование ресурсов
    • Confirm: подтверждение
    • Cancel: отмена
  3. Eventual Consistency - асинхронная синхронизация через события (Event Sourcing/CQRS).

Для микросервисов часто используют Saga или TCC, так как 2PC плохо масштабируется. Spring поддерживает JTA (Atomikos, Narayana) и Saga через Spring State Machine.

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

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

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

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