设置
前端机器接收web请求并将3种不同的任务放入Gearman
服务器。
在gearman服务器上注册了3台工作机器,每台机器都可以执行这些任务中的任何一个。
不同的任务占用不同的资源
每个任务在cpu/ram/io消耗方面是不同的。队列中的任务数量远远大于工人数量,这意味着每台工作机器向gearman注册了多个工人实例。
如何动态负载平衡
问题是,一台工作机器可以获得所有cpu密集型任务,另一台将获得i/o密集型任务,而理想情况下,一台工作机器可以并行地执行所有这些不同类型的任务。
也许gearman在这里不是合适的工具?
也许你可以使用具有公平调度和
的RabbitMQ使用3种不同的队列,一个用于CPU消耗任务,一个用于I/O,一个用于网络。
因此,每次工作机器完成这些任务中的任何一个,它都会知道它已经完成了,并得到另一个相同资源消耗类型的任务。