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