Webソケットの負荷分散方法について質問があります。
Webソケットをサポートするサーバーがあります。ブラウザは私のサイトに接続し、それぞれがへのWebソケットを開きますwww.mydomain.com
。そうすれば、私のソーシャルネットワークアプリはクライアントにメッセージをプッシュできます。
従来は、HTTPリクエストのみを使用して、2台のWebサーバーの前に2台目のサーバーとロードバランサーを追加してスケールアップしていました。
Webソケットの場合、接続はロードバランサーではなく、Webサーバーと直接行う必要があります。これは、マシンに64kのオープンポートなどの物理的な制限があり、クライアントがロードバランサーに接続している場合、サポートできなかったためです。 64kを超える同時ユーザー。
では、どうすればよいですか?
ページが読み込まれたときに、クライアントが(ロードバランサーではなく)Webサーバーに直接接続するようにしますか?ノードからJavaScriptをロードするだけで、ロードバランサー(またはその他)が、ページが最初に要求されるたびに、スクリプトのURLをランダムに変更しますか?
リップルスタートを処理しますか?Webサーバーがシャットダウンすると、ブラウザは接続が閉じられたことを認識します。JavaScriptコードを記述して接続を再開しようと試みることはできますが、ノードはしばらくの間失われます。では、ロードバランサーに戻って、使用する次のノードのアドレスを照会する必要があると思いますか?
ロードバランサーが最初のリクエストでリダイレクトを送信するので、ブラウザーが最初にリクエスト
www.mydomain.com
してにリダイレクトされるのではないかと思いましたwww34.mydomain.com
。ノードがダウンするまで、それは非常にうまく機能します-そしてFacebookのようなサイトはそれをしません。どうやってやっているの?