これは、Javaアプリケーションでの2つの分散コンポーネントの一般的なシーケンスです。
1 A sends request to B
2 B starts some job J in parallel thread
3 B returns response to A
4 A accepts response
5 Job finishes after some time
6 Job sends information to A
7 A receives response from a Job and updates
これは、すべてが機能すると仮定した場合の理想的なシナリオです。もちろん、実生活は失敗に満ちています。たとえば、最悪のケースの1つは、#6
単にネットワークが原因で失敗した場合です。ジョブは正しく実行されましたが、ジョブA
について何も知りません。
このシステムのエラーを管理する方法についての軽量なアプローチを探しています。多くのコンポーネントがあるため、エラー処理のためにそれらをすべてクラスター化しても意味がありません。次に、同じ理由で各コンポーネントに再度インストールされる分散メモリ/リポジトリの使用を取りやめました。
私の考えは、Bに1つの絶対状態を持ち、Aに永続状態を決して持たないという方向に向かっていA
ます。これは、次のことを意味します。
- 作業ユニットに
#1
マークを付ける前A
、つまり変更が開始されようとしています B
この状態のマークを解除することのみ可能です。A
B
状態を更新するために、いつでも情報を取得する場合があります。- で同じユニットの新しい変更を呼び出すことはできません
A
。
どう思いますか?この種のシステムのエラーを緩和する軽量の方法はありますか?