NPM 集群模块和监听不同的端口
NPM cluster module and listening on different ports
我看到很多将集群 npm 模块与 Express Web 服务器一起使用的示例。例如:
http://rowanmanning.com/posts/node-cluster-and-express/
但是,如果您使用集群模块创建一个新的 Web 服务器 'for each core',难道每个实例都必须侦听不同的端口吗?我看到的大多数示例似乎都没有增加或更改 http 服务器正在侦听的端口。在这种情况下,您是否需要代理服务器来路由请求,或者您可以不用代理服务器吗?
此外,当使用默认配置的集群时,所有节点都在同一端口上侦听,当我向我的服务器发出请求时,所有进程(对于每个核心)都会响应。看起来很奇怪,我原以为集群模块会管理它,以便只有一个核心会响应每个请求。
不,您不需要代理或增加分叉进程的端口。
当您使用集群模块时。有一个控制分叉进程的主进程。这是通过其他子进程分派请求的主进程。所以不存在端口冲突,master进程处理。
来自 node.js 文档:
"集群模块支持两种分发传入连接的方法。
第一个(也是除 Windows 以外所有平台上的默认方法)是循环方法,其中主进程侦听端口,接受新连接并将它们分发给一种循环方式,具有一些内置智能以避免工作进程过载。"
你可以在这里阅读:https://nodejs.org/api/cluster.html#cluster_how_it_works
我看到很多将集群 npm 模块与 Express Web 服务器一起使用的示例。例如:
http://rowanmanning.com/posts/node-cluster-and-express/
但是,如果您使用集群模块创建一个新的 Web 服务器 'for each core',难道每个实例都必须侦听不同的端口吗?我看到的大多数示例似乎都没有增加或更改 http 服务器正在侦听的端口。在这种情况下,您是否需要代理服务器来路由请求,或者您可以不用代理服务器吗?
此外,当使用默认配置的集群时,所有节点都在同一端口上侦听,当我向我的服务器发出请求时,所有进程(对于每个核心)都会响应。看起来很奇怪,我原以为集群模块会管理它,以便只有一个核心会响应每个请求。
不,您不需要代理或增加分叉进程的端口。
当您使用集群模块时。有一个控制分叉进程的主进程。这是通过其他子进程分派请求的主进程。所以不存在端口冲突,master进程处理。
来自 node.js 文档:
"集群模块支持两种分发传入连接的方法。
第一个(也是除 Windows 以外所有平台上的默认方法)是循环方法,其中主进程侦听端口,接受新连接并将它们分发给一种循环方式,具有一些内置智能以避免工作进程过载。"
你可以在这里阅读:https://nodejs.org/api/cluster.html#cluster_how_it_works