2010-05-19 63 views
0

是否有使用多個工人何時處理的程序代碼段與處理整個負載的任何固有的優勢?Windows Azure工作人員角色:一項大型工作還是很多小型工作?

換句話說,如果我的工作流程是這樣的:從隊列0

  1. 找份工作,做一個
  2. 將結果從A在隊列1
  3. 從隊列1獲得結果和做B
  4. 從的B隊列2
  5. 存儲結果得到隊列2結果和可做C

是否有內在的優勢,使用3名工人誰做的每一個全過程本身與3名工人每做的工作的一部分(工人1做1 & 2,工人2做3 & 4,工人3做5次)。

如果我們只關心工作正在做(第5步完成),它似乎是它擴展以同樣的方式(一旦你使用至少3名工人)。也許這個大工作更好,因爲具有這種設置的員工有更少的瓶頸問題?

回答

1

在一般情況下,工作是較小的,少的工作,你失去的時候一些進程崩潰。此外,工作量越小,您就可以越均勻地分發作品。 (而不是在一個單一的工人實例做很長時間的工作而其他所有工人都閒置的時候,你會讓所有的工人實例做一小塊工作。)

撇開如何把工作分解成更小有一個問題:是否應該有多個工作者角色,每個角色只能完成一種工作,或者一個工作者角色(但是多個實例)能夠完成所有工作。我會默認後者(可以做所有事情的代碼,只是檢查所有隊列以查看需要完成的事情),但是有前提的原因。例如,如果某種工作需要更多RAM,則可以爲該工作人員使用更大的VM大小。另一個例子是,如果你想獨立擴展不同類型的工作。

1

添加到@smarx說的話:

  • 一個「多功能」工人的模式當然是更普遍的。所以即使你需要專門的類型(比如上面使用的額外的RAM例子),你也只需要在該特定角色中執行一項任務。

  • 有成本的額外觀點。您將有經濟動機來增加「任務密度」(如在任務/實例中)。如果你有中號工種和分配每一個到不同的工人,那麼你將支付中號情況下,即使其中的一些可能只在一段時間做了一些工作,每一次。

blogged about this前一段時間,這是我們guide(章「06 week3.docx」)

很多框架和樣品(包括我們)使用這種方法的一個話題。