10

私はかなり長い間 ruby​​/php Web アプリケーション開発者をしており、より多くのリクエストを処理するためにサーバー インスタンスを水平方向にスケーリングするという考えには慣れています。水平スケーリング - 何も共有せず、お互いを認識しない、ロードバランサーの背後にあるアプリケーションの個別のインスタンスを意味します。

私が持っている主な質問は、Node.jsとそれがevented-ioに重点を置いているため、node.jsサーバーを実行している単一のボックスで「数千」の同時リクエストを処理できるため、nodejsアプリケーションのスケーリングに使用される負荷分散/水平スケーリングです? ノードアプリのスケーリングは垂直方向のスケーリングに限定されていますか (問題により多くの RAM/処理能力を投入します)?

2 番目の質問は、node.js の水平方向のスケーリングと WebSocket に関するものです。私は、WebSocket を利用する Node.js の「チャット」チュートリアルを数多く見てきました。(お気に入り: http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial )

Websocket はブラウザーとサーバーの間のオープンな通信回線を効果的に維持するため、PHP/Ruby の世界に典型的な水平方向にスケーリングされたアーキテクチャにより、リンクで説明されているようなチャット アプリケーションが壊れます。新しい Websocket 接続要求がさまざまなプロセス/サーバーに割り当てられ、接続されているすべてのクライアントを追跡する中央リソースはありませんか?

4

3 に答える 3

12

clusterNode.js は、組み込みモジュールを介して記述した方法とほぼ同じ方法で水平方向のスケーリングをサポートします。

この環境での websockets/socket.io の使用に関する 2 番目の質問については、ここで説明されているように、Redis などを使用して、アプリケーションの複数のインスタンス間で共有状態を保存する必要があります。

于 2012-11-12T02:51:16.767 に答える
2

Node.js のクラスター機能は、複数のプロセッサを備えた単一のサーバーに限定されています。主に、サーバー内のプロセッサの数を活用します。ロード バランサー ファサードを使用して複数のサーバーで水平方向にスケーリングしたい場合のシナリオについてもっと質問があると思います。

于 2015-02-27T15:15:36.927 に答える
0

node.js インスタンスが複数のサーバー (水平スケーリング) に分散している場合、それは同じ目的を果たします。このタイプのセットアップをサポートするには、適切にプログラムする必要があります。

于 2015-10-28T16:08:46.133 に答える