几个工人角色更贵?

时间:2011-04-22 21:44:18

标签: azure

使用Windows Azure的$$$更便宜的情况是什么?分开这两个任务是否更好。很少发送电子邮件,但会一直发布聊天消息。

  1. 每隔10秒就有一个工作人员角色处理来自Azure队列的电子邮件,并且一个工作人员角色处理每隔1秒从Azure发布聊天消息。
  2. 拥有一个通用辅助角色,每1秒处理一次电子邮件发送和聊天消息。

3 个答案:

答案 0 :(得分:4)

当在完全CPU容量或接近完全CPU容量的情况下运行时,辅助角色最有效 - 毕竟,您需要按CPU小时付费。实现此目的的一种有用方法是组合工作者角色,以便所有后台作业最终都在一个角色中执行。

运行单一工作者角色类型体系结构的一种好方法是使用某种通用工作者角色模式 - 基本上是一种插件模式,其中工作者角色从队列中读取消息并使用编码到消息中的一些元数据(或名称) (queu)确定它需要的处理类型。然后它将转到blob存储以检索.NET程序集以执行该类型的处理,将其实例化为新的appdomain并将上下文编组到该程序集中进行处理。

WIndows Azure Platform Training Kit中的异步工作负载会话对此进行了介绍。这还包含一个动手实验室,可指导您完成这些类型的方法之一的示例实现。

来自Lokad的人们有一个非常优雅的实施,包括你正确做到这一点所需的所有抛光和管理机制。他们的实施是获得新BSD许可,并且去年获得了YEar奖的MSFT Azure合作伙伴。它是我构建的几乎每个Azure项目的重要组成部分。强烈推荐和琐碎的整合。 http://code.google.com/p/lokad-cloud/

简而言之,我更喜欢将通用辅助角色实现为具有动态类型加载和实例化的插件类型模式。

答案 1 :(得分:1)

这一切都取决于您的扩展策略以及您需要运行多少个实例来处理负载。

如果您计划利用支持的SLA(99.999正常运行时间),则每个角色至少需要2个实例。

因此,如果将它们拆分,则至少需要4个实例。如果你把它们放在一起,你至少需要2个。

每秒处理1封电子邮件和每秒1条聊天消息听起来不是很多,我认为你不需要超过2个实例来处理所有事情。

但是,如果处理能力变得不稳定(即聊天消息需要比电子邮件消息更多的计算能力)并且总负载超过4个实例,我建议将它们分开,以便您可以单独扩展这两个进程

答案 2 :(得分:0)

根据您运行的小时数以及运行的CPU核心数量向您收取费用。因此,如果你把所有做同样事情的四个小虚拟机分开,而两个小虚拟机做一件事,两件做另一件事,成本是一样的。