Node.js集群 – 什么决定负载平衡?

我已经仔细阅读了这篇文章 ,并花了几个小时研究Node.js中的聚类(分叉过程)的主题。

我从文章中无法理解的东西是什么决定哪个工作进程获取请求X,如果他们都在同一个端口上进行侦听?

主进程是否有通道请求的方法,还是只是随机的?

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

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

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

在这两种情况下,你的应用程序都应该把它当作随机的(尽pipe你可以假设合理的负载平衡特性)。 但是,如果你由于某种原因需要更好的控制,那么这篇文章中的一句话(注意它是由一个node.js核心贡献者编写的,所以这里有一些权威):

将selectalgorithm转换成开发人员可configuration或可插入的东西是一个正在考虑的变化。

说,你可能会得到你要的东西。 Github上似乎有一个关于这个选项的问题。