2013-11-25 24 views
6

我已经读完了this article,并且花了几个小时研究Node.js中的聚类(分叉过程)主题。Node.js集群 - 什么决定负载平衡?

我从文章中看不出来的东西是什么决定哪个工作进程获得请求X,如果他们都在同一个端口上进行侦听?

有没有办法让主进程引导请求,还是只是随机的?

回答

3

有一个很好的解释here。长话短说,取决于您的节点版本,有两种不同的行为:

节点0.8-0.10(和Windows上的0.12+):每个进程在端口上侦听。当一个新的连接进入时,操作系统决定唤醒哪一个。在某些操作系统下的某些应用程序中,这不能很好地工作,并且留下几个进程占绝大多数的连接;在大多数情况下它工作得很好。

节点0.12+(在Windows上除外):主进程侦听端口。当他们进来时,它以循环方式将它们交给工人。

无论在哪种情况下,您的应用程序都应将其视为随机(尽管您可能会假设合理的负载平衡特性)。但是,如果由于某种原因需要更精细的控制,即文章中的一句话(请注意,它是由一个node.js的核心贡献者,所以这里有一些机构):

谈到选择算法到的东西,可由开发人员配置或插入是正在考虑的变化。

说你可能会得到你要的东西。有关此选项的似乎有an issue on Github

+3

不知道约0.12,但我认为它在0.11.2是RR。这里是相关的[commit](https://github.com/joyent/node/commit/e72cd41) – user568109

+0

@ user568109有趣。它看起来像是“v0.12中的新内容”,这篇文章意味着这是它的第一个主要版本,它只包含偶数。已更新为更接近文章语言的内容(仅引用主要版本0.8,0.10和0.12)。 –