各ステップでネットワークIO(Webサービス呼び出し)を実行してからデータを永続化するマルチステッププロセスがあります。システムクラッシュまたはいずれかのステップの失敗が原因でサービスが失敗した場合に、最後のエラーのないステップから回復して再開できるように、フォールトトレラントな方法で設計したいと思います。
これが私がこれに対処することをどのように考えているかです(これはかなり高いレベルです):
- 各ステップの状態(NOT_STARTED、IN_PROGRESS、FAILED)をデータベーステーブルに保存しました
- ステップが失敗した場合は、そのステップとその依存ステップを「失敗」としてマークし、次の非依存ステップに移動します
- このテーブルを読んで回復します(たとえば、アプリケーションのブートストラップ部分で)
この問題に対処するデザインパターン、フレームワーク、アルゴリズムがあるかどうか疑問に思いました。