свою очередь порождает запросы к другим N сервисам
Но вот в одном из них что-то пошло не так
Соответственно нужно ролбекнуть эти запросы
Но тут возникает вопрос
Чтобы всё вернуть как было, нужно дождаться пока все запросы к N вернут результат. Ну чтобы знать что и где откатывать. А это может быть долго.
Ещё вообще не желательно ждать пока чёт там в N сервисах выполнится. Но к сожалению НАДА.
В общем чё планирую сделать.
Разделить запросы на группы: такие, не такие, совсем не такие.
1) апдейиты всяких счетчиков и прочих некритичных данных
2) апдейты критичных данных
3) создание новых записей
(1) ваще не ждать как они завершатся, путь висят в очереди с бесконечным TTL
за (2) и (3) следить, и если чёт факапится, то откатываться
Всё ли правильно? Чё ещё порекомендуете?
Сильно зависит от механизма роллбека (как он вообще в вашем решении устроен). Я бы попробовал с мессадж брокером поиграться - храня состояние и исторю какого-то ентити (чье состояние надо откатить) в базе. Это вот совсем первые мысли
SAGA pattern и все вокруг, Event Sourcing, CQRS
Обсуждают сегодня