2016-11-10 94 views
0

我使用resque到後臺處理兩種類型的工作的多個作業:多個隊列VS在resque

(1) 3rd-party API requests 
(2) DB query and insert 

雖然兩份工作可以平行處理,本身每個作業類型只能串行順序處理。例如,數據庫操作需要按照連續順序進行,但可以與第三方API請求並行執行。

我考慮以下兩種方法的執行這樣的:

(1) Having two queues with one queue handling only API requests and the other queue 
handling only db queries. Each queue will have its own worker. 

(2) One single queue but two workers. One worker for each job. 

我想知道這兩種方法,差異,其中的兩個將是一個更好的方法來服用。

回答

1

這種選擇架構的選擇並不是直截了當的,你必須牢記很多事情。

有兩個隊列,一個隊列只處理API請求和其他隊列 只處理數據庫查詢。每個隊列都有自己的工作人員。

答:當你有兩個隊列同樣繁忙,即你可以有這樣的結構,如果你有一個隊列數目較多的就業機會和其他空,那麼你的一個工人會偶像,還會有其他的等待作業隊列。
你應該總是考慮充分利用你的工人。

一個單一的隊列,但兩個工人。每個工作都有一名工人。

答:這種方法是我們也是我們的項目中使用。
讓所有作業進入一個隊列並且有多個工作人員在其上運行。
無論您選擇何種類型的工作,您的工作人員總是很忙。
正確的工人利用率是可能的。


最後,我建議你可以使用第二個方法。