如何在 Node.js 中设置两个具有不同意图的工人?
How to set up two workers in Node.js with different intentions?
传统上我使用:
if (cluster.isMaster) {
cluster.fork();
cluster.on('exit', function(worker, code, signal) {
cluster.fork();
});
}
if (cluster.isWorker) {
...
}
设置工作人员,但说如果我想在不同的端口有两台服务器 运行 而当发生错误时一台服务器不关闭另一台服务器,允许仅使用 cluster
进行此类设置的方法可能是什么.
对于有不同工作要做的工人,根本不要使用集群。集群适用于共享一个端口的多个进程,传入的工作在集群中的所有进程之间平均负载平衡。
如果你想要一些其他的工作人员做不同的工作,那么只需使用 child_process 模块来启动你的工作人员,比如 child_process.fork()
,给他们不同的代码并使用任意数量的通信方法可供您与工人沟通。例如,每个工作人员可以在其端口上启动自己的 http 服务器,然后您可以从该端口上的主进程与其通信。
这是一个简单的 .fork()
示例,说明了使用进程消息在两者之间进行通信。您也可以使用许多其他通信机制。
家长代码:
const { fork } = require('child_process');
const forked = fork('child.js');
forked.on('message', (msg) => {
console.log('Message from child', msg);
});
forked.send({ hello: 'world' });
儿童代码:
process.on('message', (msg) => {
console.log('Message from parent:', msg);
});
let counter = 0;
setInterval(() => {
process.send({ counter: counter++ });
}, 1000);
传统上我使用:
if (cluster.isMaster) {
cluster.fork();
cluster.on('exit', function(worker, code, signal) {
cluster.fork();
});
}
if (cluster.isWorker) {
...
}
设置工作人员,但说如果我想在不同的端口有两台服务器 运行 而当发生错误时一台服务器不关闭另一台服务器,允许仅使用 cluster
进行此类设置的方法可能是什么.
对于有不同工作要做的工人,根本不要使用集群。集群适用于共享一个端口的多个进程,传入的工作在集群中的所有进程之间平均负载平衡。
如果你想要一些其他的工作人员做不同的工作,那么只需使用 child_process 模块来启动你的工作人员,比如 child_process.fork()
,给他们不同的代码并使用任意数量的通信方法可供您与工人沟通。例如,每个工作人员可以在其端口上启动自己的 http 服务器,然后您可以从该端口上的主进程与其通信。
这是一个简单的 .fork()
示例,说明了使用进程消息在两者之间进行通信。您也可以使用许多其他通信机制。
家长代码:
const { fork } = require('child_process');
const forked = fork('child.js');
forked.on('message', (msg) => {
console.log('Message from child', msg);
});
forked.send({ hello: 'world' });
儿童代码:
process.on('message', (msg) => {
console.log('Message from parent:', msg);
});
let counter = 0;
setInterval(() => {
process.send({ counter: counter++ });
}, 1000);