1

私たちは、SignalR を使用して、いくつかのビジネス上重要なメトリックの頻繁な更新をプッシュするシステムを開発しています。50 から 1000 までの中程度の数のクライアントが接続され、各クライアントには固有のペイロードが必要になります。

Damian Edwards が行った講演に基づいて、私たちの負荷プロファイルは、バックプレーンを使用するのではなく、トポロジ内の特定の SignalR サーバーに接続するように基本的にクライアントを割り当てる特定のサーバー スケール アウト パターンに最もよく一致します。

これがどのように機能するかについての大まかな擬似コードは、クライアントが負荷分散された API URL で GET を実行し、ヒットしたサーバーがその URL で応答し、クライアントがその URL を使用して接続するように SignalR クライアント ライブラリを構成することです。

これはオンプレミスでうまく機能するように見えますが、現在、Azure への展開も計画しています。この要件がない場合、Azure Web サイトは最適です。ただし、このパターンでは、Web サイト内の個々のインスタンスを確実に識別できる必要があり、これを行う方法はありません。

これは、Azure Web サイトが提供する抽象化を壊しているだけですか? SignalR インスタンスごとに信頼性の高い一貫した IP またはアドレス指定可能な URL を取得するには、VM または Web ロールを使用する必要がありますか? または、特定のサーバーを使用して SignalR を Azure にデプロイした別の方法があります。

4

1 に答える 1

0

既定の Azure Websites の動作が実際に機能する場合があります。

Azure Websites は、クライアントからの最初の要求の後、アフィニティ トークンを Cookie として保存します。このアフィニティ トークンにより、そのクライアントからの今後のすべての要求が Web サイトの同じインスタンスにルーティングされるようになります。

なんらかの理由で本当に負荷分散を自分で処理したい場合は、それも可能です。すべてのサイト インスタンスのアフィニティ トークンを取得できる API があります。

詳細については、こちらをご覧ください: http://blog.amitapple.com/post/2014/03/access-specific-instance/#.VH-KOHl0xUY

于 2014-12-03T22:04:50.340 に答える