Выбор ответа Senior Асинхронные интеграции и брокеры обновлено
Сага и компенсация
Вопрос
Заказ проходит шаги: резерв товара, списание денег, назначение курьера. Курьер не найден. Что делает сага?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Выполняет компенсации в обратном порядке: возврат денег, снятие резерва. Сага заменяет распределённую транзакцию цепочкой локальных шагов, у каждого есть компенсация, которая семантически отменяет результат.
Варианты ответа
- Оставляет заказ как есть, пока курьер не появится в системе
- Удаляет все записи о заказе во всех сервисах-участниках, чтобы не осталось следов
- Выполняет компенсации в обратном порядке: возврат денег, снятие резерваправильный ответ
- Откатывает распределённую транзакцию через двухфазный коммит
Разбор
Сага заменяет распределённую транзакцию цепочкой локальных шагов, у каждого есть компенсация, которая семантически отменяет результат. Двухфазный коммит это другой подход, его сага как раз избегает. Оставить заказ без решения можно только если так решил бизнес (ожидание с таймаутом), но это уже отдельная ветка. Удаление уничтожает историю и не возвращает деньги.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.