2011-11-01 6 views
11

私のアプリケーションを書く前に、単一のnode.jsインスタンス(expressおよび(socket.ioまたはnowjs))がそうでないときに何をすべきかを知る必要があります。もう十分です。Node:Scale socket.io/nowjs - 異なるインスタンス間のスケール

時間がたつまでスケールを気にする必要はありませんが、アプリケーションを開発してトラブルに遭遇することは望ましくありません。これは、socket.ioやnowjsを複数インスタンス。

私は最近、socket.ioがRedisを使ってスケールする方法をサポートしていることを読んでいます(私も経験はありません)。 Nowjsはsocket.ioの上に構築されています - それは同じように動作するのですか? nowjs.orgでは、「分散バージョンのNowJS」が開発中であり、お金を稼ぐつもりであることを読むことができます。

答えて

14

ノードの規模を調整する必要がある場合、通常は最初に複数のノードインスタンスの前にロードバランサを配置します。今日の標準はnginxですが、最近出てきたノードバランサー「弾み」をチェックしたいと思います。ここでは、複数のノードのインスタンスを管理するためにnginxのリバースプロキシを使用して誰かの例です:あなたが言及

Node.js + Nginx - What now?

二つ目はsocket.io/nowjsです。これらのフレームワークをどのように使用しているかによって、複数のnode.jsインスタンスを起動しているクライアント間でコンテキストを共有したいという状況に陥る可能性があります。このような場合は、ノードインスタンス間のギャップを埋めるために、redisのような永続ストアを使用することをお勧めします。ここでは例です:

How to reuse redis connection in socket.io?

うまくいけば、これはあなたが何か質問がある場合は私に知らせて、十分な情報であり、あなたが始めるために読んで。

ハッピーコーディング!

+0

ありがとう、あなたはnowisをredisで使用できるかどうか知っていますか? – Eliasdx

+0

もちろん、用途は異なる2つの全く異なるテクノロジーです。 Nowjsは、socket.ioに似た一定のサーバ - クライアント接続機能を提供します。これは、サーバーからクライアントへのメッセージング、クライアントブロードキャストなどの場合に便利です。古典的な例では、チャットルームを構築しています。 Redisは、バックエンドのデータストアとして多く使われています。キーと値のペアを保存したり、pubsubなどの作業を行うことができます。別のプロセスとして(または別のマシン上でも)ノードの外部に存在するため、複数のサーバー。 –

1

「Socket.IOスケーリング」を上の別の有用なリンク安定版であるnginx 1.0.xはhttp/1.1接続のプロキシをサポートしていません(これはsocket.ioをWebソケットで動作させるために必要です)。ここに説明されている回避策があります:http://www.letseehere.com/reverse-proxy-web-socketsを使用するか、代わりにhttps://github.com/nodejitsu/node-http-proxyのようなものを使用してください。nodejitsuの人はこれをサポートするべきだと言います。

関連する問題