区分其他模块中的节点主集群

时间:2014-01-25 07:53:27

标签: node.js node-cluster

我正在开发一个节点项目,我想通过节点集群运行它。由于我有一些可供每个节点集群(Worker)使用的共享资源和配置,因此在启动时我会读取这些配置并将其保存到redis db中。此外,在其他一些模块中,我需要查询一些外部资源并获取一些数据并保存到redis db中(不需要在启动时)。对于这个研究,在启动时我将配置部分放入一个函数中,如果集群是Master(cluster.isMaster),则调用它:

if (cluster.isMaster) 
configure();

我的问题是如何在其他模块中执行相同的操作?在其他模块中,我需要查询外部资源并将其放入主集群中,因为之后它也可用于工作集群。因此,无需在所有集群中进行查询。

非常感谢,

1 个答案:

答案 0 :(得分:2)

来自api http://nodejs.org/api/cluster.html

  

cluster.isMaster#Boolean如果进程是主进程,则为True。这是   由process.env.NODE_UNIQUE_ID确定。如果   process.env.NODE_UNIQUE_ID未定义,则isMaster为true。

在您的模块中,您可以选中require('cluster').isMaster,不应直接检查process.env.NODE_UNIQUE_ID,因为它会在启动后始终被删除,始终未定义。 https://github.com/nodejs/node/blob/16689e30aeff03c8c47a605425727cf190c169e9/lib/internal/bootstrap_node.js#L129