Windows Azure平台简介系列
【IT168 资讯】
定位
首先我们来看一看Windows Azure平台在微软产品大家族中的定位,并且把它和大家所熟悉的产品作个比较。

由上图可知,无论你的目标面向的是桌面,是服务器,还是云,我们都为你们提供了统一的开发和管理模式。
Windows Azure,正如同桌面操作系统Windows和服务器操作系统Windows Server一样,是一个云端的操作系统。
SQL Server是我们的服务器数据库产品,而SQL Azure则是我们的云端数据库产品。AppFabric作为中间件层,将起到连接非云端程序与云端程序的桥梁的功能。
开发人员可以使用同一套技术:.NET(包括Silverlight),或者Win32,同时针对桌面,服务器,以及云,开发程序,而不需要针对某个平台学习专门的技术。Visual Studio和Expression Studio为开发人员提供了强大的工具支持。
产品结构
接下来,我们来看看Windows Azure平台自身的产品结构。

上图中,最底层的是Windows Azure这个操作系统。它提供了Compute(计算),Storage(存储),以及Manage(管理)这三个主要功能。此外,还有对用户而言透明的Fabric。Fabric包含负载平衡,硬件抽象,等众多功能。然而一般而言,用户并不需要了解Fabric内部是如何工作的,就可以充分利用Windows Azure的各种特性。
在这之上,我们还提供了中间件产品AppFabric,数据库产品SQL Azure,以及其他一些building block产品,例如目前处于CTP阶段的Dallas。开发人员可以直接在Windows Azure之上进行开发,也可以利用AppFabric,SQL Azure等产品的各种特性。
计算
Windows Azure的计算功能可以这样被使用:
作为一个部署服务的平台
用户可以在Windows Azure上部署自行开发的服务,例如使用WCF开发的Web Service,使用WF开发的工作流,使用ASP.NET开发的运行在服务器上的网站,等等。
作为一个软件分发平台
用户可以使用Windows Azure来分发自己的软件,例如0点击(无需用户操作)部属的Silverlight,XBAP,AJAX程序,但点击(Click Once)部署的WPF和Windows Forms程序,甚至是提供一个安装包的下载链接。当然,为了充分利用云的特性,这些软件常常需要和部署在云端的服务进行交互。
作为一个一般的分布式计算平台
Windows Azure也可以作为一个一般的分布式计算平台来使用。Fabric提供了极其强大的负载平衡的支持,所以可以很好的执行一些极为复杂的并行算法。Windows Azure支持多种开发技术,例如.NET,Win32,甚至是Java,从而满足大多数客户对分布式计算的需求。
针对开发人员,Windows Azure提供了一种叫做role的概念。每个role就可以被认为是一段程序,只是这段程序可以同时在一台或者多台机体上运行。每个role可以有多个实例(instance),每个实例就对应一台虚拟机。对同一个role而言,它所有的实例执行的程序都是相同的。
当前我们提供了两种类型的role,分别是Web Role和Worker Role。通常Web Role被用于部属服务以及分发软件,Worker Role则被用于执行分布式计算。

管理员可以很轻松的通过修改配置文件的方式来管理每个role需要运行几个实例。运行多个实例可以让你的程序更快地处理请求和执行任务,但是也意味着你需要支付更多的费用。当你不再需要那么多的计算资源的时候,你可以通过修改配置文件来减少实例的数量,从而支付较少的租金。这也正是云计算的一大优势,如果不使用云计算,你必须自行购买大量的硬件来处理更多的请求和执行更多的任务,当你不再需要那么多的计算资源的时候,这些硬件也就白白浪费在那里了。
存储
Windows Azure提供了四种存储服务:
Blob
初学者可以把blob比作文件系统。是的,它确实和文件系统有非常多的相似之处。Blob storage有两个概念:
· Container:可以类比成文件夹
· Blob:可以类比成文件
和文件系统一样,用户可以针对每个container设置访问权限,可以对某个blob进行加锁(lease)从而防止concurrency问题,还可以使用诸如创建,删除,复制,备份,等众多功能。
从存储结构上来说,我们提供了两种类型的blob:
· Block blob:其存储方式类似于传统的文件系统中的簇(cluster)的概念。一个blob被分成一个或多个block进行存储。
· Page blob:Page blob对随机读写进行了优化,大家可以把它类比成大型文件,例如.vhd和.mdf文件。
Table
千万不要把table storage和关系型数据库混淆起来。Windows Azure的table storage提供了一种结构化的存储方式。通俗来说,一个table可以被想象成一个xml文件。在xml文件中我们存放各种各样的数据,在一个table中我们也可以存放各种各样的entity。同一个table可以存储结构完全不同的两个entity,这和关系型数据库中需要对每张表制定统一的schema是不同的。
Table storage的可变的schema充分体现出了其灵活性。例如,你的业务需要扩展,需要往数据结构中添加新的字段,你可以在完全不修改table schema,完全不影响现有entity的情况下,对新的entity添加新的字段。如果你的程序可以被二次开发,第三方开发人员也完全可以在不影响你的程序所需要的entity的情况下,在同一张表中存储他们的程序所需要的,结构不同的entity。
Queue
Queue提供了一种先进先出的存储方式。它通常被用于各种不同的程序间的通信。例如一个经典的应用场景:Web Role接受用户请求,针对每个请求,在一个queue中创建一条消息(message)。Worker Role则不断的从queue中取出消息,并且一一处理。
Drive
目前尚处于beta阶段的drive storage让开发人员能够使用标准的NTFS API读写文件。一个drive可以被挂接(mount)到某个特定的实例上,当作该实例对应的虚拟机的一块硬盘使用。由于drive在后台是由page blob实现的,因此你往drive中写入的文件也会自动被写入后台的page blob。这样一来数据便得到了持久化,即使万一运行当前实例的虚拟机出了问题,你还可以在其它实例中再次挂接这块虚拟硬盘,数据并不会丢失。
需要注意的是,当前一个drive在同一时间只能被单个实例挂接。如果你需要在不同的实例中同时访问文件,还是推荐使用blob。Dive更常被用于移植现有的那些需要执行大量I/O操作的程序。
管理
管理员可以直接使用Windows Azure门户来管理他们的程序。门户提供了创建,删除项目,创建,删除,更新部署,等众多功能。此外,为了帮助大家更灵活地管理部署在Windows Azure上的程序,我们还提供了Management API,让开发人员自行开发程序来管理他们的部署。
今后,我们还会将System Center与Windows Azure集成,从而使得大家可以使用同一套工具,同时管理企业内部的服务器,以及云端的资产。
介绍完了操作系统,让我们再来看看操作系统之上的中间件。Windows Azure平台的中间件名叫AppFabric。它提供了两大服务:
Service Bus
Service Bus可以被用于将本地的服务暴露给Internet。大多数的企业都拥有自己的局域网,为了解决IP地址不足的问题通常都设置了NAT,因此每台server对外都没有一个确定的地址。出于安全性考虑,防火墙往往都限制了大多数的端口。这就使得要在Internet上访问部署在本地的服务变得相当困难。
Service Bus正是为了解决这一问题而产生的。Service Bus作为一个中间人,你的服务和客户端全都作为Service Bus的客户端与之进行交流。因为Service Bus不存在NAT问题,所以你的服务和客户端都很方便地能与之通信。Service Bus在最极端的场合下只需要你的服务器暴露out bound的80或443端口,换句话说,也就是你的服务器能够以HTTP(S)协议访问Internet。只要这样,你的服务就能连上Service Bus。因此,它对防火墙的要求可以说是相当低的。
Access Control
安全永远都是程序要需要考虑的第一要素,在云中,权限管理往往要比在企业内部来的困难。这是因为你无法直接使用诸如活动目录之类的产品来统一管理你的程序的访问控制。Access Control正是为了解决这一问题而产生的。
Access Control支持federated authentication和authorization。例如,你可以要求你的用户通过企业内部的Active Directory Federation Server (ADFS)进行身份验证,使用他们的域帐号登录,将验证后的claim传给Access Control,然后根据预先在Access Control中设定的规则来给与或者否认他们访问你的服务和资源的权限。当然,Access Control也支持各种其他的身份验证方式。通过对诸如WRAP和SAML之类的标准协议的支持,Access Control体现出了良好的跨平台型。
其他
今后,我们也可能将现今Windows Server AppFabric中的功能移植到Windows Azure platform AppFabric中来。Windows Server AppFabric中的分布式缓存,以及WCF/WF管理的功能,都会对开发人员和管理员带来各式各样的益处。
SQL Azure是一个部署在云端的关系型数据库引擎,它支持SQL Server中绝大多数和开发有关的功能。作为一个部署在云端的数据库引擎,绝大多数的管理工作都由微软为你完成,因此你不用担心任何诸如备份,集群,等管理方面的问题,我们的SLA (Service Level Agreement)确保了你的数据库服务器平均每个月将有99.99%的时间在线。也正是因为这点,目前我们暂时没有暴露太多的管理功能给用户。
开发人员可以使用现有的知识,例如ADO.NET Entity Framework (EDM),LINQ to SQL,甚至是传统的DataSet,ODBC等技术,来访问位于SQL Azure上的数据。绝大多数现有的数据访问程序只需要修改一个连接字符串,便能顺利访问SQL Azure。
SQL Server 2008 Management Studio R2(目前为CTP版本)针对SQL Azure也提供了很强大的支持。目前的CTP版本已经支持根据现有的数据库,生成能在SQL Azure上运行的T-SQL脚本,从而方便大家将数据库迁移至SQL Azure。今后的版本中会对SQL Azure提供更多更强大的支持。
其他
Windows Azure平台还会推出更多的服务供大家使用。例如,现在处于CTP阶段的Dallas,就是一个部署在云端的数据分析服务。它支持和常用的工具(例如Excel 2010的PowerPivot)结合起来使用,从而让用户能够使用自己所熟悉的工具来分析位于云端的数据。