我正在寻找使用node.js创建“工作场”的解决方案。基本上我们在节点中有一个应用程序,我们需要发送“作业”以在n个工作服务器上运行。例如,假设我们有5台服务器都运行某些作业,这些作业需要分配或“排队”,直到工作人员有CPU可用于处理作业为止。
执行此操作的一种方法是在每台单独的计算机上运行一个工作服务器。每个工作程序将根据其CPU利用率或队列可用性从队列中提取。应用程序本身会将项添加到队列中(可能由Redis处理)。各个工作服务器和应用程序本身之间不会直接通信。我可以看到的一个问题是,如果多个工作人员同时抓取同一个队列。另一种方法是以某种方式与应用程序中的工作服务器进行通信,这将使工作者获得资源最少,并将作业“分配”给该特定工作者或将其排队。
有没有人知道处理这个问题的好方法?
谢谢!
答案 0 :(得分:3)
我推荐kue,它运行在Redis之上。它为您提供原子队列操作,每个工作人员可以从队列中获取下一个任务。请查看resque以获得更全功能的版本。