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