2015-06-02 24 views
2

我看到很多使用集群npm模块和Express Web服务器的例子。例如:NPM集群模块和侦听不同的端口

http://rowanmanning.com/posts/node-cluster-and-express/

但是,如果你创建“每个核心”使用群集模块的新的Web服务器,没有每个实例有听不同的端口上?我看到的大部分示例似乎都不会增加或更改http服务器正在侦听的端口。在这种情况下,您是否需要代理服务器来路由请求,或者您可以不用?此外,当使用具有其默认配置的群集时,所有节点侦听同一端口,当向服务器发出请求时,所有进程(针对每个内核)都会作出响应。看起来很奇怪,我会认为集群模块会管理它,以便只有一个内核会响应每个请求。

+2

_“集群模块允许您轻松地创建子进程**所有的共享服务器端口**” _([这里](https://nodejs.org/ api/cluster.html#cluster_cluster),还有[here](https://nodejs.org/api/cluster.html#cluster_how_it_works))。 – robertklep

+0

是的,但为什么@robertklep –

+1

有用的问题和答案!谢谢,所有。 – Connor

回答

3

不,你不需要代理或增加分叉进程的端口。

当您使用群集模块。有一个控制分叉进程的主进程。这是通过其他子进程分派请求的主进程。所以没有端口冲突,主进程处理。

从node.js的文档:

“群集模块支持分发的传入连接的两种方法

第一个(和默认一个上除Windows所有平台),是廿四。 robin方法,其中主进程侦听端口,接受新连接并以循环方式在工作人员之间分发它们,并带有一些内置智能以避免工作进程超载。“

,你可以在这里阅读:https://nodejs.org/api/cluster.html#cluster_how_it_works

+0

答案不符合问题。当端口被共享时,很难跟踪每个线程。 – shijin