2013-11-25 8 views
6

私はthis articleをかなり徹底的に読んでおり、Node.jsのクラスタリング(フォークプロセス)のテーマを研究するのに2,3時間を費やしてきました。Node.jsクラスタリング - 負荷分散を決定する要因は何ですか?

この記事で理解できないようなことは、同じポートですべてリッスンしている場合、どのワーカープロセスがリクエストXを受け取るかを決定することです。

マスタープロセスがリクエストをチャネルする方法はありますか、それともランダムですか?

答えて

3

良い説明here簡単に言えば、ノードのバージョンに応じて2つの異なる動作があります。

ノード0.8-0.10(Windowsでは0.12+):各プロセスはポートをリッスンします。 OSは、新しい接続が入ったときに起きることを決定します。いくつかのOSでは、一部のアプリケーションでは、これはうまく機能せず、接続の大半がいくつかのプロセスに残ります。ほとんどの場合、それはうまく動作します。

ノード0.12+(Windowsの場合を除く):マスタープロセスはポートをリッスンします。彼らが来ると、ラウンドロビン方式で労働者に手渡す。

これらのいずれの場合でも、アプリケーションではランダムな扱いをする必要があります(妥当な負荷分散特性が考えられます)。しかし、あなたには、いくつかの理由で(それはNode.jsのコア貢献者によって書かれたことに注意してください、ので、いくつかの機関がここにあります)、その記事の一文をより細かく制御する必要がある場合:

その何かに選択アルゴリズムを回します開発者が設定可能またはプラグ可能であることは、検討中の変更です。

は、あなたが探しているものを得るかもしれないと言います。このオプションに関するan issue on Githubがあるようです。

+3

約0.12は分かりませんが、0.11.2ではRRだと思います。関連する[コミット](https://github.com/joyent/node/commit/e72cd41) – user568109

+0

@ user568109面白いです。これは "v0.12の新機能"のように見えます。記事では、偶数だけを含む最初のメジャーバージョンです。記事の言語に近いものに更新されました(メジャーバージョン0.8、0.10、0.12のみを参照)。 –

関連する問題