【问题标题】:NPM cluster module and listening on different portsNPM 集群模块和监听不同的端口
【发布时间】:2015-08-15 20:02:46
【问题描述】:

我看到很多将集群 npm 模块与 Express Web 服务器一起使用的示例。例如:

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

但是,如果您使用集群模块“为每个核心”创建一个新的 Web 服务器,那么每个实例是否都必须侦听不同的端口?我看到的大多数示例似乎都没有增加或更改 http 服务器正在侦听的端口。在这种情况下,您是否需要代理服务器来路由请求,或者您可以不用代理服务器吗?

此外,当使用具有默认配置的集群时,所有节点都在同一个端口上侦听,当我向我的服务器发出请求时,所有进程(每个核心)都会响应。看起来很奇怪,我原以为集群模块会管理它,以便只有一个核心会响应每个请求。

【问题讨论】:

  • "集群模块让你轻松创建子进程所有共享服务器端口" (here, 还有here) .
  • 是的,但为什么@robertklep
  • 有用的问题和答案!谢谢大家。

标签: node.js express npm


【解决方案1】:

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

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

来自 node.js 文档:

"集群模块支持两种分配传入连接的方法。

第一个(以及除 Windows 之外的所有平台上的默认设置)是循环方法,其中主进程侦听端口,接受新连接并以循环方式将它们分发给工作人员,具有一些内置的智能以避免工作进程过载。”

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

【讨论】:

  • 回答与问题不符。当一个端口被共享时,很难跟踪每个线程。
猜你喜欢
  • 2012-11-06
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
相关资源
最近更新 更多