Javascript 仅使用1个工作进程的节点ipc群集
我在windows 8.1上的nodejs中使用节点ipc和群集,并已成功群集ipc服务器,并创建了与CPU数量相同的进程(在我的示例中为4个),所有进程共享相同的端口和id 我正在将多个客户端连接到此群集服务器,并希望主进程将任务委派给一个空闲的工作进程。然而,这不起作用,主人总是选择同一个工人 我已检查,所有工作进程都在运行。我怎样才能让主人每次都选择最不忙的工人呢 下面是服务器代码Javascript 仅使用1个工作进程的节点ipc群集,javascript,node.js,cluster-computing,ipc,Javascript,Node.js,Cluster Computing,Ipc,我在windows 8.1上的nodejs中使用节点ipc和群集,并已成功群集ipc服务器,并创建了与CPU数量相同的进程(在我的示例中为4个),所有进程共享相同的端口和id 我正在将多个客户端连接到此群集服务器,并希望主进程将任务委派给一个空闲的工作进程。然而,这不起作用,主人总是选择同一个工人 我已检查,所有工作进程都在运行。我怎样才能让主人每次都选择最不忙的工人呢 下面是服务器代码 var os = require('os'); var numCPUs = os.cpus().length
var os = require('os');
var numCPUs = os.cpus().length;
var cluster = require('cluster');
var ipc = require('node-ipc');
if (cluster.isMaster) {
console.log("I am master, launching workers");
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
console.log("worker " + i + " launched");
}
} else {
ipc.config.id = 'worldserver';
ipc.config.retry= 1500;
ipc.config.silent = true;
console.log(`I am worker #${cluster.worker.id}`, process.pid);
ipc.serve(
function(){
ipc.server.on('sayhello', function(data,socket) {
console.log(`I am worker #${cluster.worker.id}`, process.pid);
ipc.server.emit(
socket,
'message',
'hello'
);
}
);
ipc.server.on('error', function(e) {
console.log('IPC ERROR!!', e);
});
});
ipc.server.start();
}
var ipc=require('node-ipc');
ipc.config.id = 'hello';
ipc.config.retry= 1500;
ipc.config.silent = true;
setInterval(function() {
ipc.connectTo(
'worldserver',
function(){
console.log("sending something");
ipc.of.worldserver.emit(
'sayhello',
"true"
);
ipc.of.worldserver.on(
'message',
function(data){
console.log('I got this message from the server:');
console.log(data);
}
);
}
);
}, 20);