1

我正在寻找使用 node.js 创建“工人农场”的解决方案。基本上我们在节点中有一个应用程序,我们需要发送“作业”以在 n 个工作服务器上运行。例如,假设我们有 5 台服务器都运行某些作业,这些作业需要分发或“排队”,直到工作人员有可用的 CPU 来处理这些作业。

一种方法是在每台单独的机器上运行一个工作服务器。每个工作人员都会根据其 CPU 利用率或队列可用性从队列中拉取。应用程序本身会将项目添加到队列(可能由 Redis 处理)。各个工作服务器和应用程序本身之间不会有直接的通信。我可以看到的一个问题是,如果多个工作人员同时抢占同一个队列。另一种方法是从应用程序以某种方式与工作服务器进行通信,这将使工作人员拥有最少的资源并将作业“分配”给该特定工作人员或将其排队。

有谁知道处理这个问题的好方法?

谢谢!

4

1 回答 1

3

我推荐 kue,它运行在 Redis 之上。它为您提供原子队列操作,每个工作人员都可以从队列中获取下一个任务。查看 resque 以获得更全功能的版本。

于 2013-09-07T21:29:54.457 回答