我正在寻找使用 node.js 创建“工人农场”的解决方案。基本上我们在节点中有一个应用程序,我们需要发送“作业”以在 n 个工作服务器上运行。例如,假设我们有 5 台服务器都运行某些作业,这些作业需要分发或“排队”,直到工作人员有可用的 CPU 来处理这些作业。
一种方法是在每台单独的机器上运行一个工作服务器。每个工作人员都会根据其 CPU 利用率或队列可用性从队列中拉取。应用程序本身会将项目添加到队列(可能由 Redis 处理)。各个工作服务器和应用程序本身之间不会有直接的通信。我可以看到的一个问题是,如果多个工作人员同时抢占同一个队列。另一种方法是从应用程序以某种方式与工作服务器进行通信,这将使工作人员拥有最少的资源并将作业“分配”给该特定工作人员或将其排队。
有谁知道处理这个问题的好方法?
谢谢!