具有node.js的集群模块的全局对象

mit*_*esh 2 rest resources node.js express

我在node.js中使用express构建的Rest api应用程序中使用群集.

使用群集的Rest API的完整代码是.

var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
var counter = {"color":{},"weight":{}};

if (cluster.isMaster) {

        for (var i = 0; i < numCPUs; i++) {
            cluster.fork();
        }

        cluster.on('exit', function(worker, code, signal) {         
            var exitCode = worker.process.exitCode;
            console.log('worker ' + worker.process.pid + ' died ('+exitCode+'). restarting...');
            cluster.fork();     
        });



} else {    

        var express = require("express"),
        var msg;
        var server = express();     
        server.use(express.bodyParser());
        server.post('/grouper', function (req, res) {

            //some update on global counter         

        });

        server.listen(8080);

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有什么方法可以像一个不同的分叉实例之间的代码中显示的计数器对象一样拥有一个全局对象,以便所有实例更新同一个对象?

Amo*_*rni 8

所有工作进程确实是应用程序变量的新副本.

每个工作人员都是使用创建的全功能流程child_process.fork.在文档中,您可以获得以下声明:

工人之间没有共享状态.由于工人都是独立的流程,因此可以根据您的计划需求杀死或重新生成工作,而不会影响其他工作人员

所以答案是不,你不能共享一个变量counter,你的集群进程之间不会共享变量.