1.3 微软云计算平台Windows Azure
2008年10月27日,微软首席架构师雷·奥兹在2008年微软专业开发者大会(PDC)中首次宣布了Windows Azure云计算平台,并于2010年2月正式开始商业运转。在最初的介绍中,Windows Azure平台包含了Windows Azure、Microsoft SQL Services、Microsoft .NET Services和Live Services等多种服务。但是随着时间的推移,微软公司不断根据使用者的需求修正Windows Azure平台的服务和分类。目前Windows Azure平台包含了如下四个主要的服务:
· Windows Azure
· SQL Azure
· Windows Azure AppFabric
· Windows Azure Connect
之前提到,Windows Azure平台是目前业界最成熟、也是应用范围最广的PaaS服务。作为平台提供商的微软,目前不仅负责其Windows Azure计算中心的网络部署、服务器(虚拟机)的管理、系统的容灾和调度,同时还负责为其虚拟机提供Windows、IIS和.NET运行时,以及高可靠的SQL Azure关系型数据库服务。
1.3.1 高可用性
Windows Azure平台由Windows Azure操作系统(基于Windows Server 2008 Hyper-V构建)管理,具有针对数据中心的自我管理机能,可以自动监控分布在数据中心的各个不同分区的所有服务器和存储节点,自动进行操作系统的更新,自动进行虚拟机部署和镜像备份。Windows Azure的控制中心Windows Azure Fabric Controller随时监控数据中心的服务器状态,在遇到故障的时候负责各服务器、虚拟机之间的热切换。也就是说在使用Windows Azure平台的时候,使用者完全不需要关注服务器、数据库的容灾与备份问题,Windows Azure为我们提供了一个几乎永远不会停机的运行环境。
Windows Azure平台提供的计算服务可靠性为99.95%,而其他的几项服务,例如存储服务、SQL Azure数据库服务和Windows Azure AppFabric的可靠性均可以达到99.9%。
注意
对于Windows Azure计算服务,开发人员必须使用两个或两个以上的运行实例才能过获得99.95%的高可用性保障。
1.3.2 易于部署和伸缩
对于Windows Azure这样的PaaS,由于操作系统、中间件和运行时都由平台提供,使得在部署应用的时候更加方便,同时对于资源的申请和撤销也更加容易。在Windows Azure平台上,无论是部署ASP.NET网站、WCF服务,还是部署一个运行于后台的异步工作模块,开发人员都可以简单地将应用程序打包并且通过Windows Azure Developer Portal上传(图1-4),此后Windows Azure平台会自动分配相应的计算单元(虚拟机),然后通过镜像文件恢复操作系统、IIS、.NET运行时等必要组件,最后复制打包的应用程序并启动。而所有这些工作一般会在几分钟到十几分钟之内完成。除此之外,如果在本地开发环境中安装了Windows Azure Tool for Visual Studio,那么使用者甚至不需要离开Visual Studio环境就可以完成上述所有的部署工作。
图1-4 Windows Azure Developer Portal
对于资源的申请和撤销也一样的方便。例如开发人员需要为一个已经在Windows Azure上部署好的应用增加运算能力,比如增加几台网站服务器,那么需要做的仅仅是在Windows Azure Development Portal上面修改相应的配置文件就可以了。Windows Azure平台会立即分配所申请的虚拟机,安装操作系统以及必要组件,部署网站代码然后启动。同样这一切也仅需几分钟左右的时间便可完成。
由此可见,Windows Azure平台为开发人员和最终使用者都提供了简单方便的部署功能和很高的伸缩性,使得我们可以从容应对IT资源需求量的大幅度波动。
1.3.3 全球化
作为服务于全球的Windows Azure,微软公司到目前为止一共在全世界三个大区修建了六个数据中心,它们分别是:北美区的北美数据中心和南美数据中心、欧洲区的北欧数据中心和西欧数据中心,以及亚太区的东亚数据中心和东南亚数据中心。其中地理位置上距离我国内地最近的就是位于中国香港的东亚数据中心,如图1-5所示。
图1-5 Windows Azure在全球部署的数据中心
这六个数据中心几乎涵盖了目前计算机行业发达的主要地区,而在实际部署基于Windows Azure应用的时候需要注意客户的地理位置,选择距离相对较近的数据中心。对于我们的内地客户,在作者经历的多个项目中,位于中国香港的数据中心基本上可以满足使用要求。
不但如此,微软还在美洲、欧洲、亚洲、澳洲和南美的二十多个地区部署了多个CDN服务器,为静态文件和动态文件提供CDN加速。关于Windows Azure CDN服务请参见本书8.6节。
1.3.4 开发语言和开发模型
Windows Azure平台基于微软的多项成熟技术,从开发人员的角度,基于Windows Azure开发基本不需要太多的额外学习成本。Windows Azure平台上面可以运行基于.NET Frameworks的任何应用程序,包括ASP.NET WebForm、ASP.NET MVC、WCF Service以及F#。由于在Windows Azure上部署的网站和WCF服务都是基于IIS的,所以它们的整个运行流程和生命周期与此前基于独立服务器时几乎没有任何区别。同时,如果本地开发环境中安装了Windows Azure Tool for Visual Studio,开发人员就可以在Visual Studio 2008或Visual Studio 2010中创建Windows Azure项目,并且基于Windows Azure模拟器进行本地调试。
提示
Windows Azure还允许开发人员基于后台Worker Role部署WCF服务。关于使用Worker Role部署WCF服务请参考本书8.1.2节。
而对于Windows Azure平台中的关系型数据库服务SQL Azure而言,由于和SQL Server一样也使用TDS协议,因此开发人员可以使用任何SQL Server的工具和类库来操纵SQL Azure。例如在应用程序中使用ADO.NET、ODBC等方式进行数据访问,使用LINQ to SQL或是Entity Framework等ORM框架实现数据访问层。同时,开发人员也可以使用SQL Server Management Studio 2008 R2管理SQL Azure数据库。
Windows Azure平台的另一个功能模块Windows Azure AppFabric简化了企业内部已存在的服务与云端应用相互通信的操作,通过新增的WCF扩展允许开发人员方便地将已经部署在企业内部的服务安全地开放给云端应用以及Internet上的用户。而在2011年初推出的Windows Azure Connect功能则为云端虚拟机和本地服务器提供了IP级别的共享能力,使云端的应用程序能够方便、安全地访问本地资源,如打印机、共享文件夹、数据库等。
当然,由于Windows Azure平台运行于Windows Azure操作系统,相对于来说开发和部署还是会有一些不同的。同时Windows Azure平台也为我们提供了传统模式下不具备的功能,所以说还需要开发人员针对Windows Azure平台的特性进行必要的学习。