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