12.5.3 Microsoft云平台
Windows Azure Platform是一个服务平台,用户利用该平台,通过互联网访问微软数据中心的计算和存储服务,它不但支持传统的微软编程语言和开发平台,如C#和.NET平台,还支持PHP、Python、Java等多种非微软编程语言和架构。WindowsAzure平台包含如下几个部分。
●计算服务
Windows Azure平台中每个计算实例是一个运行着64bit的Windows Server 2008的虚拟机,分为三种类型:Web Role实例,Worker Role实例和VM Role实例。其中,Web Role实例提前在内部安装了IIS7,用于托管Azure平台用户的Web应用程序;Worker Role实例设计用来运行各种各样的基于Windows的代码,例如,Worker Role实例可以运行一个模拟程序、进行视频处理等,Worker Role与Web Role的不同点在于,Worker Role内部并没有安装IIS。一般来说,用户只会用到Web Role和Worker Role。应用通过Web Role与用户相互作用,然后利用Worker Role进行任务处理。当用户需要将本地的Windows Server应用移动到Windows Azure平台时,VM Role将会起作用。VM Role除了允许对环境拥有更多的控制权之外,它和Web Role以及Worker Role是没有区别的。与Amazon云平台需要用户提供虚拟机的虚拟映像文件不同的是,Azure平台会自动虚拟出虚拟机,处理虚拟机升级,Role实例故障,Azure平台用户只需要专注于如何创建应用程序即可。
●存储服务
Windows Azure存储服务包括Azure Blob,Table,Queue以及SQL Azure。其中,Azure Blob存储二进制数据,如图片,照片,视频等个人文件。Azure Table存储更加结构化的数据,支持单张表格上的操作,但是它不同于关系数据库系统中的二维关系表,查询语言也不是大家熟悉的关系查询语言SQL。Azure Queue的作用和微软消息队列(MSMQ)相近,用来支持在Windows Azure应用程序组件之间进行通信。SQL Azure则是将微软的关系数据库SQL Server搬到云环境中,提供二维关系表和SQL查询语言。为了提高访问性能,Windows Azure还提供了两种缓存机制:Azure Caching以及Azure内容分发网络(CDN)。Azure Caching在数据中心内部缓存热点数据,Azure CDN在离用户较近的“边缘节点”缓存Azure Blob中的Blob对象。
●连接服务
Windows Azure连接服务包括Azure Service Bus以及Azure Connect。Azure Service Bus包含三个部分:Service Bus Queue,Service Bus Topic和Service Bus Relay。其中,Service Bus Queue和Service Bus Topic与消息中间件的Queue和Topic模式类似,用于解除应用程序之间的耦合。Service Bus Queue提供点对点的通信,保证每个发送者产生的消息只被一个接收者获取;Service Bus Topic提供一对多的发布订阅通信,每个发布者发布的消息能被所有的订阅者获取。Service Bus Relay使得Azure平台服务器端可以访问运行在企业内部的本地WCF服务,这些WCF服务通常没有一个固定的IP地址,而且被企业防火墙所保护。Azure Connect在Windows Azure应用和本地运行的机器之间建立一个基于IPsec协议的连接,使得两者更容易结合起来使用。例如,某个企业需要将现有的由ASP.NET创建的Windows Server应用移动到Windows Azure Web Role中区,如果这个应用使用的数据库需要保留在本地机器上,那么Azure Connect技术能够使运行在Windows Azure上的应用正常访问本地数据库,甚至连使用的连接字符串都不需要改变。
●工具支持
Windows Azure平台不但支持传统的微软编程语言和开发平台如C#和.NET平台,还支持PHP、Python、Java、node.js等多种非微软编程语言和架构。Azure平台提供各种语言的SDK以及平台管理工具。
图12-6显示了Windows Azure Platform用于托管用户Web程序的整体架构。假设网站MyWebSite.com托管在Windows Azure平台的某个数据中心内。Azure平台开发者将Web应用上传到Azure平台,由平台将应用自动部署到Role实例上。在Azure内部,一个应用可能运行在一个或者多个Role实例上,将运行同一个应用的Role实例成为一个Role实例组,并通过负载均衡器将访问请求按照一定的策略自动分发到其中的Role实例。开发者的Web应用可以使用Azure平台上的存储类服务,包括Azure Blob、Table、Queue以及SQL Azure。为了提高性能,应用也可以使用Azure Caching缓存热点数据,就像使用Memcache一样。
图 12-6 Windows Azure Platform整体架构
网站上往往有一些Blob对象,比如图片、视频,这些对象存储在Azure Blob系统中,并通过内容分发技术缓存到多个Azure CDN节点。Internet用户访问MyWebSite.com中的Blob时,访问请求将通过DNS定位到CDN节点上,如果CDN缓存了Blob的副本,直接将副本返回给用户,否则,CDN节点将请求Azure源站中的Azure Blob存储系统获取Blob对象,这一步操作称为回源。