私のお勧めは、世界のエンドポイント (必要に応じてプロキシ) であるマスター/コントローラーを作成することです。すべての接続がそこに到達し、それらをバックエンドの世界固有のサーバーに直接ルーティングします。この接続は非常に薄い可能性があるため (接続が確立されたら、IP トンネルだけを考えています)、遅延が大きくなることはありません。
このアプローチにはいくつかの落とし穴があります。
プロキシは、限られた数のアクティブな接続しか処理できません。したがって、これを監視し、トラフィックをセカンダリ プロキシ/リレーにルーティングする方法が必要です。Windows Azure のビルトイン ロード バランサーは、これに適しています。アクティブな接続を監視し、その情報を使用してスケーリング動作を制御するだけで済みます。
さらに、アイドル状態の接続は Windows Azure ロード バランサーによって強制終了されるため、プロキシは接続が強制終了されたことを検出して、それらのリソースを解放して別の接続にサービスを提供できるようにする必要があります。
このアプローチの利点は、ワールド サーバーがオフラインになったり移動したりした場合 (そしていずれそうなることになるでしょう)、プロキシがワークロードがどこに移動したかを検出し、それに応じて接続をシフトすることで、外部ユーザーには見えないようにすることです。 .
さて、これらすべてに対しても機能する別のアプローチが 1 つあります。Windows Azure サービス バス リレー。各「ワールド」サーバーは、サービス バス上に独自のエンドポイントを持ち、クライアントが接続を要求すると、制御する「プロキシ」に到達し、要求されたサーバーのエンドポイントを取得します。クライアントとサーバーが直接接続をネゴシエートし、リレーの遅延を減らすハイブリッド接続を有効にすることで、これをさらに一歩進めることができます。また、サービス バス エンドポイントは、公開された場所であるため、マシン固有のアドレス指定可能性に関する問題を解決します。