我有一个多步骤过程,其中每个步骤都会执行一些网络 IO(Web 服务调用),然后保留一些数据。我想以容错的方式设计它,以便如果服务失败,无论是因为系统崩溃还是其中一个步骤失败,我都能够从最后一个无错误步骤恢复并重新开始。
这是我正在考虑如何解决这个问题(这是相当高的水平):
- 将每个步骤的状态(NOT_STARTED、IN_PROGRESS、FAILED)存储在数据库表中
- 如果步骤失败,将其及其相关步骤标记为“FAILED”并移至下一个非相关步骤
- 通过读取此表进行恢复(例如在应用程序的引导部分中)
我想知道是否有一些设计模式、框架和算法可以解决这个问题。