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

时间:2013-11-25 04:43:10

标签: node.js cluster-computing

我已经非常彻底地阅读了this article,并且花了几个小时研究Node.js中的聚类(分叉过程)主题。

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

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

1 个答案:

答案 0 :(得分:4)

有一个很好的解释here。简而言之,根据您的节点版本,有两种不同的行为:

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

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

在其中任何一种情况下,您的应用程序都应将其视为随机的(尽管您可以假设合理的负载平衡特性)。但是,如果由于某种原因需要更好的控制,那篇文章中的一句话(注意它是由node.js核心贡献者编写的,所以这里有一些权限):

  

将选择算法转换为开发人员可配置或可插入的内容,这是一项正在考虑的变更。

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