2010-05-19 33 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”)

很多框架和样品(包括我们)使用这种方法的一个话题。