web-dev-qa-db-ja.com

Websocketとスケーラビリティ

WebSocketの初心者です。何かが変更されたときにサーバーがクライアントに通知する必要があり、websocketの使用を計画しているアプリケーションでニーズがあります。

1)単一のサーバーインスタンスと単一のクライアント==>作成されるWebソケットの数とWebソケットへの接続の数

2)単一サーバーインスタンスと10クライアント==>作成されるWebソケットの数とWebソケットへの接続の数

3)単一サーバーインスタンスと1000クライアント==>作成されるWebソケットの数とWebソケットへの接続の数

アプリケーションのユーザーベースが1000の場合、webscoketsでどのようにスケーリングしますか?

ご意見ありがとうございます。

11
user3216514

1)単一のサーバーインスタンスと単一のクライアント==>作成されるWebソケットの数とWebソケットへの接続の数

クライアントが1つのwebSocket接続を作成する場合、それがクライアント上に1つのwebSocket接続とサーバー上に1つのWebSocket接続があることです。サーバーへのwebSocket接続を作成するのはクライアントであるため、サーバーの数を決定するのはクライアントです。 3を作成すると、3になります。1を作成すると、1になります。通常、クライアントは1を作成します。

2)単一サーバーインスタンスと10クライアント==>作成されるWebソケットの数とWebソケットへの接続の数

前述のように、それはクライアントが何をするかに依存します。各クライアントが1つのwebSocket接続を作成し、サーバーに10個のクライアントが接続されている場合、サーバーには合計10個のwebSocket接続が表示されます。

3)単一サーバーインスタンスと1000クライアント==>作成されるWebソケットの数とWebソケットへの接続の数

ポイント#2と同じ。

アプリケーションのユーザー数が1000を超える場合、Webscoketでどのようにスケーリングしますか?

適切に構成された単一のサーバーは、アイドル状態のWebSocketがサーバーCPUをほとんど使用しないため、ほとんどがアイドル状態である数十万の同時webSocket接続を処理できます。さらに大規模な展開では、サーバーをクラスター化し(複数のサーバープロセスを実行)、スティッキーロードバランシングを使用して負荷を分散できます。

大規模なwebSocketまたはsocket.ioの展開を追求している場合は、Googleで読む価値のある他の多くの記事があります。

フェニックスの200万のWebsocket接続への道

Node.jsを使用したAWSでの60万の同時websocket接続

1000万の同時webSockets

最終的に、適切に構成されたサーバーごとの達成可能な規模は、接続ごとのアクティビティの量と、それを配信するために必要な計算量に大きく関係する可能性があります。

25
jfriend00