有没有办法在NodeJS中的多个工作人员之间共享variables?

我正在运行一个节点js应用程序。 当它启动时,我为每个核心创build一个工作者。 我需要在创build的每个工作人员之间创build一些全局variables。 有没有办法做到这一点?

对于一小组variables,您可以使用自定义环境创build工作人员。 例如:

// On the master when creating the process: cluster.fork({ GLOBAL_VAR_A: 12345 }); // On workers: var globalA = parseInt(process.env.NODE_GLOBAL_VAR_A, 10); 

我已经把一个parseInt在这里突出显示,环境variables是string。 这只能用于一些variables,因为它显然很大。

尽pipe有两个重要的select

  • configuration文件 :很多时候,你想分享的数据真的是configuration。 configuration可以简单地存储在文件中,所有的工作人员将读取相同的数据。
  • 数据库 :另一个是通过数据库共享状态。 例如,如果你真的需要,redis pubsub允许你维护工作者之间的同步variables。

正如亚历克斯的回答中所提到的,本地集群IPC也是一个选项,但真正用于主人和员工之间的通信。 你不想让你的主进程做太多,以避免可能的错误,抛出未捕获的exception。 这也可能是值得一看的zeromq等

不,没有办法做到这一点。

Node.js工作人员是故意相互独立的,只有通过某些通道(TCP / Pipe / IPC / etc)发送序列化的对象才能进行通信。