首页 文章

Azure工作者角色是一种方法,它做了一些繁重的工作,并具有负载 balancer ?

提问于
浏览
1

您的帮助将使我更好地了解Windows azure . 提前致谢 .

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

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

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

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

3)通过WCF排队队列在同一Azure解决方案中的实例之间进行通信的缺点是什么?这慢了吗?

2 回答

  • 0

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

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

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

  • 4

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

相关问题