2017-09-27 7 views
-1

私は、UI(クライアント)から要求を取得し、外部Web APIと通信している別のサーバーへの呼び出しを作成するサーバーがあるシステムで作業しています。サーバーとサーバーの整合性に関するベストプラクティスのアーキテクチャ

私が直面している問題は、2つのサーバーの間に矛盾があります。なぜなら、外部のAPIに直面しているサーバーは、20分程度で失敗することがあります。

だからステータスが

サーバーAはサーバーへのリクエストが可能送られましたすることができ、200 OK - サーバB上のステータス - サーバーA上のステータスがACTIVEまたは サーバーBは、API呼び出しを送信し、 を失敗した保留にしておくことができますエラーが発生しました

アクションAが実際に失敗したことをサーバーAに伝えるベストプラクティスは何ですか?

答えて

0

クライアントとサーバーの設計に大きく依存します。私は右のあなたを理解している場合 、外部API(私は次のテキストでCそれを呼び出す)へのサーバーBからのAPI呼び出しは非同期的に設計されています

A ---------> B 
A <-- ACK -- B 
       B ---------> C 
       B <-- ERR -- C 

(A <-- ERR -- B) 
^ that is your question 

はメッセージ通信によっては、複数の可能性があります。

{ 
    status: queued, 
    operationId: 12345 
    operationStatusUri: yourhost.com/api/queue/123456 
} 

クライアントが今ポーリングするコールを使用することができます。あなたは、呼び出し、Bからのご確認が操作IDと操作のステータスを求めることができるエンドポイントを含めることができREST上で動作している場合状態。

メッセージベースのアーキテクチャを使用している場合、メッセージバスシステムを使用してエラーをBからAにプッシュできます。

関連する問題