作者 王枫 发布于2014年5月15日

综述

本文介绍建立一个在Azure上使用Azure服务总线, 高吞吐量短信平台的必要步骤。在这篇文章中提出的解决方案是在响应由客户的具体要求,建立一个基于Windows Azure技术的复杂远程信息处理应用。

在Windows Azure中的通讯服务

Windows Azure平台通过不同的技术支持信息通信:

  • 存储队列
  • 服务总线

以下各段将给予每个类型的信息传递技术的概览。

存储队列

您可以使用Windows Azure中的队列,支持组件之间的异步通信。应用程序中的组件可以发布信息到一个队列。其他组件可以接收信息,并提供处理。队列中提供组件之间耐用的持久性存储,以及负载调平,负载均衡,和缩放的好处。

服务总线

Windows Azure服务总线为广泛的交流,大型活动分布,命名和服务发布提供了一个托管,安全和广泛可用的基础设施。服务总线为Windows Communication Foundation(WCF)和其他服务端点提供连接选项 - 包括REST端点 - 否则将很难或根本不可能达到。

针对Windows Server的服务总线是一组可安装的组件,为Windows Sever上提供Windows Azure服务总线的信息传递功能。适用于Windows Server的服务总线,使您能够在自我管理的环境,并在开发计算机上构建,测试和松耦合运行,信息驱动的应用程序。

通讯设计模式

使用存储队列构建松散耦合的信息传递方案

Windows Azure的队列存储是一个用于存储大量的信息,可以在世界任何地方通过身份验证的调用使用HTTP或HTTPS访问服务。一个单一的队列的信息可高达64KB的大小,队列可以包含数百万条信息,高达100TB的总极限容量的存储帐户。常见队列存储用途包括:

  • 建异步处理积压的工作
  • Windows Azure Web角色中传递信息到Windows Azure Worker角色

队列服务包含以下组件:

URL格式:队列可以通过以下URL格式访问:
http://<storage account>.queue.core.windows.net/<queue>
下面的URL地址针对图中的队列:
http://myaccount.queue.core.windows.net/imagesToDownload

  • 存储帐户:所有Windows Azure存储是通过一个存储帐户来访问的。存储帐户是访问队列的最高级别的命名空间。帐户内表格和队列内容存储的总大小不能超过100TB。
  • 队列: 队列中包含一系列信息。所有信息必须在队列中。
  • Message: 一个信息,无论任何格式的最大上限是64KB

一个涉及多个组件之间的存储队列典型的架构设计模式,可以类似于下列:

在这个模式中,多个前端Web Role客户端发送信息到一个或多个存储队列,然后多个Worker Role实例从一个或多个队列读取信息及进行处理。

上述架构可以通过以下方式缩放:

  • 存储队列:当信息并发数量增加,可以增加更多的存储队列
  • Worker Role实例:当信息的数量增加,Worker Role实例的数量可以增加,从而使更多的计算资源可用于处理从队列中的信息。

不过,也有数个点,我们需要考虑到,以确保在现实中的架构可以灵活扩展:

  • 存储帐户:一个单一的存储帐户的可扩展性目标是每秒5000条信息
  • 存储队列:一个单一队列的可扩展性目标是能够处理最多每秒500条信息

由于上述两个存储帐户和存储队列的限制,如果我们希望能够同时处理大量信息,我们需要分割我们的存储基础设施成多个队列和/或存储帐户。

例如,一个客户端以每秒1000条信息的速度传送到Azure存储队列中,我们希望我们的解决方案以无积压及最快的速度来处理信息,那么我们就需要使用4个队列及分割我们我们的信息传递到4个队列中,看下图。

每个队列每秒可以处理500个信息,包括入口和出口,如果我们想每个队列尽快处理信息,那么每个队列入口和出口每秒应该处理不超过250个信息。既然我们的入口和出口每秒要处理1000条信息,因此,我们需要共4个队列。Web Role客户端将需要分割信息及均匀地分配到可用的队列以分担工作负载。

在另一情况下,客户端以每秒10,000条的速度发送信息到存储队列,那么我们就需要创建多个存储帐户分担工作量。为了处理每秒10,000个信息,我们需要2个存储帐户,每个存储账户下, 需要20个队列。

利用服务总线主题发布订阅信息

服务总线主题和订阅支持信息发布/订阅传递通信模式。当使用主题和订阅,分布式应用程序个组件不直接彼此沟通,而是通过一个主题,充当中介的信息交换。

相比在服务总线队列,每个信息是由单一消费者处理的,主题及订阅使用发布/订阅模式提供了一个对多个形式的通信。一个主题注册多个订阅是可能的。当一个信息被发送到一个话题后,它会被每个订阅独立处理。您可以选择为基于每一个订阅基础上的主题, 注册过滤规则,它可以让你过滤/限制主题订阅中接收的信息。

服务总线主题和订阅,让你在横跨非常大量的用户和应用程序下, 可以扩展到处理一个非常大的信息数目。

自动转发链接服务总线实体来缩放单个主题

自动转发功能能让您使一个订阅或队列链到相同的服务命名下另一个队列或主题。当&#