Node.js 集群尽可能频繁地处理数据
Node.js Cluster to Process Data as Often As Possible
请多多包涵,因为我是集群的新手,文档不合我意。
if (cluster.isMaster)
{
for (let i = 0; i < numCPUs; i++)
{
cluster.fork();
}
for (const file in files)
{
cluster.workers.send(file); //***
}
}
else if (cluster.isWorker)
{
process.on("message", (msg) =>
{
//...Process data here...
});
}
*** 是我想要的那种东西。像 cluster.workers.send(...) 这样的东西会向工作人员发送消息,不忙的人会收到消息。如果所有工作人员都忙,则消息将等待发送,直到有空闲工作人员。
如果您有大量任务,则需要一个数据库来管理队列,正如 Vinay Pandya 所建议的那样,redis 将是一个不错的选择。
你想防止额外的依赖,你可以在集群主进程中使用一个队列数组,push/shift任务to/from那个数组。要确定空闲节点,您可以维护一个 'nodes' 对象,并在每个节点完成其更新任务时获得反馈。反馈可以用 process.send.
请多多包涵,因为我是集群的新手,文档不合我意。
if (cluster.isMaster)
{
for (let i = 0; i < numCPUs; i++)
{
cluster.fork();
}
for (const file in files)
{
cluster.workers.send(file); //***
}
}
else if (cluster.isWorker)
{
process.on("message", (msg) =>
{
//...Process data here...
});
}
*** 是我想要的那种东西。像 cluster.workers.send(...) 这样的东西会向工作人员发送消息,不忙的人会收到消息。如果所有工作人员都忙,则消息将等待发送,直到有空闲工作人员。
如果您有大量任务,则需要一个数据库来管理队列,正如 Vinay Pandya 所建议的那样,redis 将是一个不错的选择。
你想防止额外的依赖,你可以在集群主进程中使用一个队列数组,push/shift任务to/from那个数组。要确定空闲节点,您可以维护一个 'nodes' 对象,并在每个节点完成其更新任务时获得反馈。反馈可以用 process.send.