私はAcaniのチャット サーバーを書いています。ロード バランサーのスケーラビリティを備えたnode.jsとwebsockets のスケーリングについていくつか質問があります。
Node.js の負荷分散とは正確には何を意味するのでしょうか? これは、サーバー アプリケーションのn 個の独立したバージョンが実行され、それぞれが別のサーバーで実行されるということですか?
webSocketConnections
1 つのクライアントが他のすべてのクライアントにメッセージをブロードキャストできるようにするために、サーバー上で開かれたすべてのクライアントのセットを保存します。しかし、サーバー アプリケーションのn 個の独立したバージョンがそれぞれ別のサーバーで実行されている場合、 n 個の異なるセットを持つことになりwebSocketConnections
ますか?webSocketConnections
1 と 2 の答えが肯定の場合、 (すべてのサーバーにわたって)のユニバーサル セットを保存するにはどうすればよいですか? 私がこれを行うことができると思う 1 つの方法は、Redis Pub/Sub を使用webSocketConnection
し、Redis のチャネルにすべてのサブスクライブを設定することです。では、単一の Redis サーバーがボトルネックになるのではないでしょうか? 次に、どのように Redis をスケーリングしますか? Redis をスケーリングすることは何を意味するのでしょうか? これは、異なるサーバーで実行されているm 個の独立したバージョンの Redisがあるということですか? それは可能ですか?
Redis はスケーリングしないと聞きました。なぜ誰かがそう言うのでしょうか。どういう意味ですか?それが本当なら、パブ/サブおよび/またはブロードキャストされたすべてのメッセージのリストを保存するためのより良い解決策はありますか?
注: 地球上の 70 億人 (および成長中) のそれぞれが、地球上のすべての人に毎秒メッセージをブロードキャストしたとしても、Acani は規模を拡大する必要がないというのがあなたの答えである場合、有効な説明をしてください。