1. 15 ミリ秒のタイムアウトを設定し、800 ミリ秒まで指数関数的にバックオフする再試行ポリシーを実装します。このサービスは、接続しているかどうかに関係なく、必要なセッションを作成します。
プロ
- セッションがすぐに利用できないことを検出します。これを約 1 秒待つ必要はありません。
- セッションを再度リクエストするか、別の方法で実行するかはクライアント次第です。さまざまなユースケースに柔軟に対応できます。
- フォールバック戦略が実行されるたびに、15 ミリ秒を超えるセッションのレポートを待機するという望ましくないイベントを区別できます。これは、セッション プールの異常な動作の検出に役立ちます。
短所
- フォールバック動作のため、コードはより複雑になります。
- タイムアウトが異なるため、複数のパラメーター。
2. 800 ミリ秒のタイムアウトを設定し、セッションが利用可能になるまでサービスへの接続を維持するには。
プロ
- シンプルでわかりやすい実装
- 簡単なパラメータ化
短所
- セッション プールからのセッション作成イベントの遅延に気付くことはありません。これは、トレースと診断にとって重要です。この単純なアプローチでは、セッション プールの問題を隠すことができます。
- さまざまなクライアントのユース ケースに対する柔軟な実装ではありません。
-
このユースケースに適したソリューションが必要かどうか、またはこのアプローチがさまざまなクライアントとユースケースに使用されるかどうかが決定要因だと思います。
PS: さまざまなクライアント向けのソリューションを作成する必要がある場合は、次のようなより複雑なプロトコルを作成する価値があります。
// just takes a session if available, no more than 15msec delay expected
get_session(...) : session
// if not available, creates one
get_session_or_create(...) : session
available_sessions(...) : int
// between 0 and 1, the proportion of available sessions
availability(...) : double
...
使い方はお客様次第です。
また、セッション作成の遅延の差異に応じて、タイムアウト パラメータを安全な % だけ大きくします。