У меня есть многошаговый процесс, где каждый шаг выполняет некоторый сетевой ввод-вывод (вызов веб-службы), а затем сохраняет некоторые данные.Я хочу спроектировать его отказоустойчивым способом, чтобы в случае сбоя службы, либо из-за сбоя системы, либо из-за сбоя одного из шагов, я смог восстановить и перезапустить с последнего безошибочного шага.
Вот как я думаю об этом (это довольно высокий уровень):
- Сохраняет состояние каждого шага (NOT_STARTED, IN_PROGRESS, FAILED) в таблице базы данных
- Если шаг не выполнен, пометьте его и его зависимый шаг как «СБОЙ» и перейдите к следующему независимому шагу
- Восстановите, прочитав эту таблицу (например, в начальной загрузке приложения)
Мне было интересно, есть ли какие-то шаблоны проектирования, структуры и алгоритмы, которые решают эту проблему.