![](/img/trans.png)
[英]How do you set up workers in a cluster using Node.js without having it in the same file?
[英]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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.