2011-08-31 55 views
1

由於後臺進程繁重,我們需要多臺服務器來執行後臺進程。我們使用resque來處理後臺作業。由於每個 服務器上的resque工作人員都將執行類似的任務,因此執行此操作的最佳方法是什麼?多個服務器上的resque worker

  1. 在每臺機器上啓動worker,每個機器上處理所有隊列。
  2. 劃分每臺服務器上工作人員之間的隊列,以便一臺服務器上的工作人員負責處理一半隊列,而另一臺工作人員則負責處理其餘隊列中的工人。

我喜歡第一個解決方案。但是這有什麼限制嗎?

謝謝。

回答

12

您應該可以在任意數量的服務器上傳播您的Resque工作者,而不會有任何問題。

Resque工作隊列應該用於分類和組織不同類型的工作。

我個人認爲每個工作人員都應該能夠處理每種工作類型,因此您可以高效地使用資源。

這就是說,我改變了在不同工作人員上處理什麼隊列的優先順序,以便給定類型的工作可能會找到工作人員來幫助,即使大部分資源專用於更高優先級的工作。

例如,具有6名工人和3種類型的queus:

Queues: 
------- 
critical - top priority jobs 
email - time-sensitive, but not critical 
maintenance - background work, to be done whenever 

Workers w/ Queues 
----------------- 
1: critical, email, maintenance 
2: critical, email, maintenance 
3: critical, email, maintenance 
4: critical, email, maintenance 
5: critical, maintenance, email 
6: critical, maintenance, email 

這種設置guarentees臨界工作將前上任何工人任何其他工作進行處理。但是,如果系統被電子郵件作業淹沒,只有2/3的工作人員會被阻塞,如果有維護工作需要發生。

希望你能推斷這個例子到你的隊列和優先級。

+0

謝謝,你的回答真的很有幫助。我在這裏還有一個與resque相關的問題:http://stackoverflow.com/questions/7272592/multiple-resque-workers-mode-creating-extra-processes。看起來你對resque有很好的瞭解,所以我在這裏複製了這個鏈接。希望你不介意:) – bikashp

+0

好極了,如果你可以把它標記爲回答並投票,那就太好了。 – Winfield

相關問題