Выбор ответа Senior Асинхронные интеграции и брокеры обновлено

Сага и компенсация

Вопрос

Заказ проходит шаги: резерв товара, списание денег, назначение курьера. Курьер не найден. Что делает сага?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Выполняет компенсации в обратном порядке: возврат денег, снятие резерва. Сага заменяет распределённую транзакцию цепочкой локальных шагов, у каждого есть компенсация, которая семантически отменяет результат.

Варианты ответа

  1. Оставляет заказ как есть, пока курьер не появится в системе
  2. Удаляет все записи о заказе во всех сервисах-участниках, чтобы не осталось следов
  3. Выполняет компенсации в обратном порядке: возврат денег, снятие резерваправильный ответ
  4. Откатывает распределённую транзакцию через двухфазный коммит

Разбор

Сага заменяет распределённую транзакцию цепочкой локальных шагов, у каждого есть компенсация, которая семантически отменяет результат. Двухфазный коммит это другой подход, его сага как раз избегает. Оставить заказ без решения можно только если так решил бизнес (ожидание с таймаутом), но это уже отдельная ветка. Удаление уничтожает историю и не возвращает деньги.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.