私はZeroMQ(ネットワーキングの優れた抽象化)でサービスを実装しています。理想的には、クライアントがサーバーが期待どおりかどうかを判断できれば素晴らしいでしょう。
例:
3 つのサービスがあります。
- サムサービス。(ポート 50001 で実行)
- 乗算サービス。(ポート 50002 で実行)
- 電力サービス。(ポート 50003 で実行)
ただし、別のサービスがこれらのポートを取得したために、サービスがデフォルト ポートで実行されていない場合があります。
プログラムの信頼性を高めるには、このケースを処理する必要があります。
サービスが期待どおりかどうかを確認するにはどうすればよいですか? 私は、標準的な史上最高のアルゴリズム (またはそれを見つけるためのキーワード) を意味します。
アルゴリズムについての私の考え (かなり不完全な場合があります):
- クライアントは、何よりもサービスの識別子を含むハンドシェイクを送信します。
- クライアントはタイムアウトの応答を待ちます (例: 30 秒)
- サーバーは適切に応答します。
- オーケー、クライアントは通信を開始します。
例外:
- 間違った応答
- タイムアウト