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

Что такое распределенная транзакция

Распределенная транзакция — это операция, затрагивающая несколько независимых ресурсов (например, БД или сервисы), которая должна быть выполнена атомарно (все или ничего). Для управления такими транзакциями используется протокол двухфазного коммита (2PC):

  1. Фаза подготовки — координатор запрашивает участников, могут ли они выполнить транзакцию.
  2. Фаза коммита/отката — если все участники готовы, транзакция фиксируется, иначе откатывается.

Пример с Java и JTA (Java Transaction API):

java
@Stateless
public class DistributedService {
    @Resource
    private UserTransaction utx;

    @PersistenceContext(unitName = "db1")
    private EntityManager em1;

    @PersistenceContext(unitName = "db2")
    private EntityManager em2;

    public void transfer() throws Exception {
        utx.begin();
        em1.persist(new Entity()); // Операция в БД1
        em2.persist(new Entity()); // Операция в БД2
        utx.commit(); // Фиксация или откат
    }
}

Проблемы: блокировки, низкая производительность, сложность восстановления после сбоев. Альтернативы — Saga-паттерн или eventual consistency.

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

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

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

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