使用Node.js群集工作程序执行特定任务

时间:2015-11-30 10:29:11

标签: javascript node.js cluster-computing

在节点I中使用群集模块可以允许http服务器在多个核心上运行,从而提高并发性,这很棒。但是,如果我的应用程序包含其他我不想多次运行的任务,例如预定的事件。我怎么能这样做?

使用群集模块的基本代码就是这样......

var cluster = require('cluster');

if(cluster.isMaster){
    var numWorkers = require('os').cpus().length;

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

    //restart dead workers
    cluster.on('exit', function(worker, code, signal) {
        console.log('Worker ' + worker.process.pid + ' died with code: ' + code + ', and signal: ' + signal);
        console.log('Starting a new worker');
        cluster.fork();
    });
}else{
    var http = require('http');
    var server = http.createServer(function(req, res) {
        res.write(process.pid.toString());
        res.end();
    });

    server.listen(5000);
    console.log("Server is listening");
}

现在,如果我有一项任务,我想每小时运行一次。

setInterval(function(){
  doSomething();
}, 60*60*1000);

我会把它放在哪里?我已经读过,主人应该只管理工人,以避免主人抛出错误和崩溃的风险。是否有可能向特定工人提供个别事件?

0 个答案:

没有答案