我正在运行节点js应用程序。当它开始时我每个核心创建一个工作者。我需要在我创建的每个worker之间创建一些共享的全局变量。有没有办法做到这一点?
答案 0 :(得分:3)
对于一小组变量,您可以使用自定义环境生成工作者。例如:
// 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
来强调环境变量是字符串。这应该只用于一些变量,因为它显然会严重缩放。
虽然有两个重要的选择
正如alex的回答中所提到的,原生集群IPC也是一种选择,但实际上是用于主人和工人之间的沟通。您不希望主进程执行太多操作以避免可能导致未捕获异常的错误。也许值得一看zeromq等。
答案 1 :(得分:2)
不,没有办法做到这一点。
Node.js工作者是故意彼此独立的,只有他们进行通信的方法是通过某个通道(TCP / Pipe / IPC /等)发送序列化对象。