2014-01-25 46 views
2

我正在处理一个节点项目,我想通过节点集群运行它。由于我有一些可用于每个节点集群(Worker)的共享资源和配置,因此在开始时我会读取这些配置并将其保存到redis db中。另外,在其他一些模块中,我需要查询一些外部资源并获取一些数据并保存到redis数据库中(不需要在启动时,在我需要的时候)。对于这个reseaon,在启动时,我把我的部分配置成一个函数,并调用它如果群集是硕士(cluster.isMaster):区分其他模块中的节点主集群

if (cluster.isMaster) 
configure(); 

我的问题是我怎么可以做同样在其他模块?在其他模块中,我需要查询外部资源并将其放入主集群中的redis中,因为之后它也可用于工作集群。所以,不需要在所有群集中进行查询。

所以在此先感谢,

+0

尝试'require('cluster')。isMaster' –

回答

2

从API http://nodejs.org/api/cluster.html

cluster.isMaster#Boolean如果这个过程是一个高手。这是由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

+0

谢谢:),这工作,我可以有我的senario全局变量? – ali

+0

'process'是一个全局变量,你只需要深入'process.env.NODE_UNIQUE_ID' – TruongSinh