2017-09-21 5 views
-1

私は100のAPIを持っていて、各APIは6つのデータベースと話しています。私はステータスエンドポイントを構築する2つのアプローチを考えています。消費者はビジネスニーズを実行するために100個のAPIすべてにアクセスする必要はなく、必要に応じて1個または2個のAPIにアクセスできます。api statusエンドポイントを実装するベストプラクティスは何ですか?

1)各apiには独自の/ステータスエンドポイントがあり、そのエンドポイントは使用している6つのデータベースすべてとの接続をチェックし、失敗した場合は正常でない場合は正常に戻ります。この場合、APIコンシューマは消費するステータスエンドポイントのみにアクセスします。この場合、特定のAPIを消費した人は、/状態のエンドポイントにアクセスして健康状態をチェックします。

2)このケースでは、コンシューマは、6つのデータベースのいずれかがダウンしていて、api自体がダウンしている場合に基づいて、100個のapisのステータスを含む1つのエンドポイントのみにアクセスします。データベースがダウンしていて、その特定のAPIのステータスが不健全で、データベースが稼動していてapiがアップしていれば、apiは正常であり、消費者はこの単一のエンドポイントから必要に応じて個々のステータスまたはすべてのapiのステータスを取得できます。各apiには独自の内部/ステータスエンドポイントがあり、依存する6つのデータベースのステータスに関係なく正常に戻ります。 6つのデータベースすべてに6つのステータス・エンドポイントを追加し、接続性をチェックし、それ以外の場合は正常でない場合は正常に戻ります。

これらの2つの中から最良のアプローチは何でしょうか?

私は本当にあなたのすべての入力に感謝します。

答えて

1

どちらもしないでください。依存関係(この場合はデータベース)の健全性が赤色に変わったために正常に動作している30個のクラスタ化されたマイクロサービスの正常性が赤色に変わったことがわかると、sysopsは狂ってしまいます。あなたが知っているデータベース状態監視ツールがあります。シソプスは、何がダウンしているかに注意を払う必要があります。理想的には、マイクロサービスは依存関係の健康を気にしてはいけません。トランザクションをキューに保持しておき、可能であれば、サービスを再度試してみてください。

いずれにしても、リアルタイムアナリティクスで適切な集約ロギングが設定されていれば、シスオプスはマイクロサービスとデータベース(とにかく)間のリアルタイム接続の問題を見ています。さらに理想的には、マイクロサービスはデータ永続性の観点からより分離されている必要があります。 100マイクロサービスは、6データベースを直接戦う?

関連する問題