1

您的帮助将使我对 Windows azure 有更好的了解。提前致谢。

我理解工作者角色就像一个方法(工作者角色中的 Run() 方法),它正在做一些耗时的操作。这使我可以拥有此工作角色的多个实例,以在流量激增时加快速度。

1) 我是否可以拥有一个工作角色,而不只是做以下事情: - 创建 PDF 的方法;- 创建图表的方法;- 一种解析 som HTML 的方法;- 一种处理图像的方法

我可以使用 4 个工作角色轻松完成所有这些工作(上述每个功能一个 RUN() 方法),但这非常昂贵。我可以将这 4 件事作为方法放在同一个工作角色上吗?

2) 在工作角色上托管 WCF 服务有什么缺点?

3)通过WCF而不是队列在同一个Azure解决方案中的实例之间进行对话有什么缺点?这慢吗?

4

2 回答 2

4

工作者角色的接口很简单……你实现了一个永不返回的 Run() 方法,我们称之为它。你在那里所做的可以是任何事情......你可以启动 100 个线程做不同的事情,你可以使用 Process.Start() 来启动单独的进程,你可以启动一个 Web 服务器等。

我不知道以工作角色托管 WCF 是否有缺点。在 Web 角色中,您可以使用 IIS 作为主机,与运行您自己的主机相比,这可能有助于提高服务的可伸缩性。

一种常见的模式是让工作者角色从队列中提取工作。队列的优点是它保证每条消息至少被传递一次(这样你就不会失去工作)。它还分配负载,因为每个工作人员都可以在准备好进行更多工作时从队列中提取消息。如果您改用 WCF 或其他一些同步通信,您必须自己处理如何分配工作以及如何从错误中恢复(不丢失工作)。这当然是可能的(实际上可能比往返队列更快),但以这种方式构建可靠、可扩展的服务更难。

于 2010-12-24T11:12:58.920 回答
0

只需添加到 Smarx - 小心你如何分割你的功能 - 你为你启动的每个工人角色付费,所以除非你的工作流程中有一个特别的热点,并且你已经以最大容量运行多个工人,你会更好关闭创建可以作为多个实例运行的单个工作者角色。

于 2010-12-30T00:04:27.493 回答