如何在 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);