Node.js集群尽可能频繁地处理数据

时间:2017-02-07 05:34:09

标签: javascript node.js sockets pm2

请耐心等待我,因为我对群集完全不熟悉,而且文档没有点击我。

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(...)这样的东西会向工作人员发送消息,而任何不忙的人都会接收消息。如果所有工作人员都忙,那么该消息将等待发送,直到有一名自由工作人员。

1 个答案:

答案 0 :(得分:2)

如果您将拥有大量任务,则需要一个数据库来管理队列,而Vinay Pandya建议,redis将是一个很好的选择。

您希望防止额外的依赖关系,您可以在群集主进程中使用队列数组,并将任务推送/移出该数组。要确定空闲节点,您可以维护“节点”对象,并在完成其任务时从每个节点获得反馈以更新它。可以使用process.send完成反馈。