pm2、节点、实例和端口

pm2, node, instances and ports

抱歉,如果这个问题是'newbie',但我不知道如何去做/它是如何工作的。

1/ 我正在使用 node.js 创建一个 API,API 服务于一些前端应用程序

2/ 为了让它更健壮,我使用 pm2(很棒的产品),使用 nginx 作为代理,很好

3/ 但是我如何处理 node.js api 的多个实例?我看到 'cluter mode',很好,但是当我的 node.js 正在侦听单个端口(例如 8080)时发生了什么?如果我配置 4 个进程/实例,它们就不能同时监听同一个端口啊? ...所以:pm2 是否在实例之间调度调用(因此确实充当了一种代理)。

任何线索将不胜感激,它是如何工作的?

格雷格

集群模式下的节点创建一个主节点,然后生成共享 TCP 连接的工作进程,因此负载基本上分布在工作进程之间。

这是一篇详细介绍 pm2 和节点集群的漂亮文章 -

https://getstream.io/blog/running-pm2-node-js-in-production-environments/

希望对您有所帮助。

感谢大家的回答, 所以,根据你给我的所有提示:

  • 我必须自己处理线程之间的会话和变量,
  • pm2集群模式才是正道
  • pm2 将在实例之间调度调用,比方说以循环方式

案例结束,再次非常感谢你提供的所有提示和答案,你节省了我很多时间。

您也可以使用 nginx 管理负载。这是 nginx load balance

的文档

之后,您可以使用 .env 文件中的环境变量 运行 具有特定端口的应用程序,并像这样访问它。例如:process.env.PORT

之后 运行 应用以这种方式使用 pm2

PORT=5003 pm2 start routes.js --name app5003
PORT=5002 pm2 start routes.js --name app5002
PORT=5004 pm2 start routes.js --name app5004