0

设置
前端机器接收 Web 请求并将 3 种不同类型的任务放入Gearman服务器。
在该 gearman 服务器上注册了 3 台工作机器,每台都可以执行任何这些任务。

不同的任务消耗不同的资源。
每个任务在 cpu/ram/io 消耗方面都是不同的。
队列中的任务数量远大于工作人员的数量,这意味着每台工作机器向 gearman 注册了多个工作人员实例。

如何对其进行动态负载平衡
问题是一台工作机器可以获得所有 cpu 扩展任务,另一台机器可以获得 i/o 扩展任务,而理想情况下,工作机器可以更好地并行执行所有这些不同类型的任务。

也许 gearman 不是这里的正确工具?

4

1 回答 1

0

可能您可以使用具有公平调度的 RabbitMQ并
使用 3 个不同的队列,一个用于 cpu 消耗任务,一个用于 i/o,一个用于网络。

因此,每次工作机器完成任何这些任务时,它都会知道它已经完成并获得另一个相同资源消耗类型的任务。

于 2013-01-21T11:07:03.723 回答