2013-01-19 25 views
0

設置
前端機接收Web請求,並提出3種不同的任務組成Gearman服務器。
3個工人機器在該齒輪人服務器上註冊,每個人都可以執行任何這些任務。動態負載平衡的任務隊列

不同的任務消耗不同的資源。
每個任務在cpu/ram/io消耗方面都不相同。
隊列中的任務數量遠大於工作人員數量,這意味着每個工作機器都使用齒輪工註冊多個工人實例。

如何動態負載平衡它
的問題是,一個工人的機器可以得到所有的CPU廣泛的任務,另一個會得到I/O大量任務,而理想的工人可以進行更好的怪笑這種不同類型的任務是並行的。

也許齒輪工不是這裏的正確工具?

+0

我知道rabbitmq有'公平'的平衡,下一個任務去機器,表明它是免費的。但是一臺機器可以並行執行3個任務,每個任務消耗不同種類的資源。 – Alex

回答

0

也許你可以使用具有fair dispatching
使用3個不同的隊列, 一個爲CPU耗時的任務,一個用於I/O和一個用於網絡的RabbitMQ。

因此,每當工作機完成這些任務時,就會知道它已完成並獲得相同資源消耗類型的另一個任務。