近两年IT领域里没有任何一项技术能够像云计算(Cloud Computing)一样引起如此多的关注,Google、Amazon、IBM、HP、Dell、Sun、Intel、Oracle和Microsoft等巨头们以前所未有的速度和规模推动云计算技术和产品。作为传统软件领域巨头,微软带来的Windows Azure Platform云计算技术有什么特别之处呢?
高阳
微软最有价值专家(2007~2010),TechEd2009讲师。复旦大学软件硕士,曾任微软开发经理、大展信息科技(北京)有限公司技术总监、北方跃龙科技(北京)有限公司CTO等职务。著有《我也能做CTO之程序员职业规划》、《.NET软件设计新思维——像搭积木一样搭建软件》、《深入体验Microsoft Office SharePoint Server实践开发》、《Windows Powershell 2.0 应用编程最佳实践》等图书。
蒋建华
北京亚士帝公司高级程序员/ 项目经理,具有多年的软件开发和项目管理经验,2010年4月合著出版图书《构筑敏捷的开发团队——微软Visual Studio 2010实战兵法》。
#p#
云计算究竟是什么?
2007年3月,Google首次提出了云计算的概念,但是直到现在云计算都没有一个统一的定义。各大厂商甚至每个人对云计算的理解都可能不同,不过笔者认为Forester Research(一家独立的技术和市场调研公司,针对技术给业务和客户所带来的影响提供务实和具有前瞻性的建议。)给出的定义更能概括厂商的目的:云计算是一种标准化的IT能力,将软件、应用平台、基础设施整合建立起一个系统,通过Internet技术以按需和自助的方式提供服务。
云计算是网格计算( Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算( Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等计算机技术和网络技术相融合的产物。它将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得企业、组织机构和个人无需为计算能力和存储以及对这些资源的管理而烦恼,能够更加专注于自己的业务流程,有利于创新和降低成本。云计算提供了可靠、安全的数据存储中心,用户不用再担心数据丢失、病毒入侵等麻烦;同时云计算对用户端的设备要求低,电脑、手机、电视等终端均可接入;此外,云计算可以轻松实现不同设备间的数据与应用共享。更重要的是云计算为我们使用网络提供了几乎无限多的可能。因此云计算具有超大规模、使用虚拟化技术、高可靠性、可扩展性、通用性、按需服务、高性价比等特点。
2009年3月,Amteam.org根据多方数据采集与分析将“云”产品划分为三大类:云计算基础设施、平台、服务
微软的张亚勤曾经给出过一个云计算公式:云计算=(数据软件+平台+基础设施)×服务。此公式表明了云最重要的是服务,基于云计算服务的三种模式,微软云计算采用了“软件+服务”、“云+端”的策略。Windows Azure Platform正是这一策略的具体实现:一方面提供了可靠的软件平台;另一方面通过提供服务或者开放的系统运营企业服务。那么,Windows Azure Platform究竟是怎么一回事儿呢?下面我们就为大家介绍一下它的核心技术和实现原理。
云计算的分类
从部署方式来说,云计算可以分为:私有云、公共云和混合云。从提供服务的模式来说,云计算可以分为:基础设施作为服务IaaS(Infrastructure as a Service)、平台作为服务PaaS(Platform as a Service)和软件作为服务SaaS(Software as a Service)。
#p#
Windows Azure Platform
Windows Azure Platform运行在微软数据中心的服务器和网络基础设施上,通过公共互联网对外提供服务。从其在微软整个产品线中的定位来看,Windows Azure Platform无疑处于最顶端。
Windows Azure Platform的产品定位
了解Windows Azure Platform在微软产品线中的定位,有助于我们将云计算的产品和桌面、服务器产品区分开来,如Windows Azure AppFabric和Windows Server AppFabric就是不同的产品。对Windows Azure Platform的进一步了解,将从构成、基础、结构和特性这四个方面展开。
构成:微软云计算的“三驾马车”
以“三”为要素的词语在汉语里常常意味着稳定、有冲击力,像我们常说的三足鼎立、三剑客……Windows Azure Platform同样有“三驾马车”:Windows Azure、SQL Azure、Windows Azure AppFabric(或者说Windows Azure Platform AppFabric,以下简称AppFabric;注意在一些文章中Windows Server AppFabric也简称为AppFabric,而在本文中除非特别说明,AppFabric都是指Windows Azure AppFabric)。Windows Azure可看成是云计算服务的操作系统;SQL Azure可看成云端的关系型数据库;AppFabric则是一个基于Web的开放服务,可以把现有应用和服务与云平台的连接和互操作变得更为简单。
Windows Azure Platform的组成
Windows Azure是一个云服务的操作系统,它提供了一个可扩展的开发、托管服务和服务管理环境。SQL Azure(之前被称为SQL Server Data Services)是以SQL Server 2008为主,构建在Windows Azure之上,运行云计算的关系数据库服务,是一种云存储的实现,并提供网络型的应用程序数据存储服务,简单地说就是SQL Server的云端版本。AppFabric作为中间件层,起到连接非云端程序与云端程序的桥梁功能,它让开发人员可以把精力放在他们的应用逻辑上而不是在部署和管理云服务的基础架构上。
Windows Server AppFabric和Windows Azure AppFabric
Windows Server AppFabric和Windows Azure AppFabric之间的关系类似于SQL Server和SQL Azure之间的关系,即带“Server”的是服务器产品,带Azure的是云端产品,我们甚至可以把Windows Server AppFabric理解为一款主要面向私有云计算的系统。
#p#
基础:透明的虚拟化
在介绍Windows Azure Platform的基础之前,我们需要先了解一下微软云计算的参考架构。从图中我们可以看到Windows Azure Platform是一个PaaS类和IaaS类的平台,为什么说还是IaaS类平台呢?这是因为Windows Azure提供了存储、管理功能,SQL Azure提供了关系型数据的存储,而Windows Azure AppFabric则是连接了Windows Azure和SQL Azure的中间件,将安全连接作为一项服务提供,帮助开发人员在云部署、内部部署和托管部署之间架起桥梁。这座桥梁提供了两种服务:Service Bus(服务总线)和Access Control(访问控制)。
微软云计算的参考架构
Windows Azure Platform的基础是虚拟化,虚拟化架起了硬件资源(主机、存储、网络、其它硬件)和基础服务之间的桥梁,PaaS通过基础服务和虚拟化来使用资源层的资源。虚拟化对用户来说是透明的,同时虚拟化也是动态数据中心的基础核心层。可以说,没有虚拟化技术,想要实现动态数据中心几乎是不可能的,但是虚拟化不是云计算。
Microsoft Hyper-V虚拟化技术
Microsoft Hyper-V虚拟化技术是Windows Server 2008的一个关键组成部分。Hyper-V提供了将服务器资源虚拟化并在Windows管理框架中管理这些资源的能力,对于核心基础设施主要构建在Windows Server 和其它Microsoft应用程序技术的用户而言,Hyper-V是一个理想的选择。通过虚拟化,用户可以共享内存、硬盘、CPU等硬件资源。
#p#
结构:“三驾马车”细解析
了解了Windows Azure Platform的构成和基础以后,相信大家对微软云计算平台已经有了一个总体的认识,接下来我们就要对Windows Azure Platform的三驾马车进行分解了。
Windows Azure:云计算服务的操作系统
Windows Azure主要包括三个部分:一是运营应用的计算服务,二是数据存储服务,三是基于云平台进行管理和动态分配资源的控制器( Fabric Controller)。Windows Azure提供了一个可扩展的开发、托管服务和服务管理环境,这其中包括提供基于虚拟机的计算服务和基于Blobs、Tables、Queues、Drives等的存储服务。
Windows Azure的功能
Windows Azure是一个开放的平台,支持微软和非微软的语言和环境。开发人员在构建Windows Azure应用程序和服务时,不仅可以使用熟悉的Microsoft Visual Studio、Eclipse等开发工具,同时Windows Azure还支持各种流行的标准与协议,包括SOAP、REST、XML和HTTPS等。
SQL Azure:云中的数据库
SQL Azure是一个云的关系型数据库,它可以在任何时间提供客户数据应用。它基于SQL Server技术构建,但并非简单地将SQL Server安装在微软的数据中心,而是采用了更先进的架构设计,由微软基于云进行托管,提供的是可扩展、多租户、高可用的数据库服务。
SQL Azure在架构上分为4个层次
SQL Azure帮助用户简化多数据库的创建和部署,开发人员无需安装、设置数据库软件,也不必为数据库打补丁或进行管理;为用户提供了内置的高可用性和容错能力,且无需客户进行实际管理;支持TDS和Transact-SQL(T-SQL),客户可以使用现有技术在T-SQL上进行开发,也可以使用与现有的客户自有数据库软件相对应的关系型数据模型。SQL Azure目前不完全支持SQL Server上的所有功能,如分析服务、镜像、报表服务以及能够选择不同的服务提供者提供不同的服务。这是因为当前的网络状况和云计算平台部署需求所决定的,在将来肯定会提供更多功能,例如Dallas。
AppFabric:云的基础架构服务
AppFabric是基于Web的开放服务,它可以把现有应用和服务与云平台的连接和互操作变得更为简单,为本地应用和云中应用提供了分布式的基础架构服务。在云计算中存储数据与运行应用都很重要,但是我们还需要一个基于云的基础架构服务。这个基础架构服务应该既可以被客户自有软件应用,又能被云服务应用,AppFabric就是这样一个基础架构服务。AppFabric最常用的一个场景是Web Role和Worker Role之间的通信,而AppFabric最强大的地方在于能够跨平台。
Web Role和Worker Role
Windows Azure提供了一个叫做“Role”的概念,每个Role可以被认为是一段程序,与普通的应用程序不同的是这段程序可以同时在一台或者多台机器上运行。每个Role可以有多个实例(Instance),每个实例就对应一台虚拟机。对同一个Role而言,它所有的实例执行的程序都是相同的。现在有两种类型的Role:Worker Role(工作者角色)和Web Role(Web角色)。Web Role:是一个Web应用程序,它可以通过HTTP或HTTPS与外界通信,一般来说,Web角色响应请求,执行一个动作,然后等待下一个请求的到来。Worker Role:是一种后台执行(Running On Background)的应用程序,运行.Net框架代码的后台进程应用程序。
#p#
特性
综合性平台
Windows Azure Platform既是运营平台,又是开发、部署平台;开发人员创建的应用既可以直接在该平台中运行,也可以使用该云计算平台提供的服务;平台上既可运行微软的自有应用,也可以开发部署用户或ISV(Independent Software Vendors,独立软件开发商)的个性化服务;平台既可以作为SaaS等云服务的应用模式的基础,也可以与微软线下的系列软件产品相互整合和支撑(如现在已经提供了在线服务的Office 2010,这是微软云计算平台最具特色的一面和强大之处)。由于平台的综合性,在这个平台上,既可以使用公有云,也可以部署混合云,甚至现在微软正在提供一些新的服务器级产品,将来可以部署私有云。
应用程序迁移容易
在云计算时代之前,已经有了很多的基于.Net平台下的C/S、B/S应用系统,这些应用系统尤其是B/S应用系统(Web应用程序),可以很容易地迁移到云中去。对于Web应用程序的迁移,可以分成两个部分来进行:一部分是应用程序数据的迁移,另一部分是应用程序的迁移。应用程序数据的迁移,我们可以使用SQL Server和SQL Azure迁移工具很容易地把原本存储在SQL Server上的数据迁移到SQL Azure上去。即使数据存储在My SQL上也比较容易,微软同样提供了工具,先把My SQL上的数据库迁移到SQL Server上,再从SQL Server上迁移到SQL Azure。对应用程序的迁移就更容易了,直接使用向导式的界面就可以迁移到Windows Azure上。
开发人员的优势
对于开发者而言,Windows Azure已经建立起一个简单而快速的系统,最重要的是它拥有着标准的模型,是我们步入“云计算”时代的捷径。开发者可以根据自己的需要选择功能来使用,比如数据库、业务工具,甚至是第三方软件提供的功能。对.Net平台下的开发者来说,无需学习更多的专业知识和技能,使用现有的技能、工具和技术,比如微软.NET框架和Visual Studio 2008,下载安装Windows Azure Tools for Visual Studio以后就可以体验云应用程序的开发了。同时,也为开发者提供了更灵活的开发平台和程序语言的选择与支持,如提供了对PHP、Java、Ruby语言的SDK。微软最近发布的Visual Studio 2010为Windows Azure提供了专门的项目模型,我们可以利用Visual Studio 2010将我们创建的服务打包,然后通过Windows Live Developer Portal部署到Windows Azure云计算平台上。当然,除了这些优势,微软云计算平台也有自己的一些不足,如价格问题,微软云计算平台现在已经商用,全都是收费的,而且价格不低,而Google云计算的平台则根据流量和容量来收费,在一定流量和容量下是免费的。
微软云计算的应用
微软的云计算应用既有针对消费者的服务,也有针对企业的服务。微软针对消费者提供了包括Windows Live、Office Live、Live Messenger、Bing以及 Xbox Live等在内的多种服务。上述服务用户都已在大量使用,比如Live Meeting每年用户使用的在线会议时长达50亿分钟;Windows Live ID每天用户登录使用人数达10亿人;Exchange Hosted Services每天处理电子邮件信息20~40亿条等。微软针对企业用户的服务为Microsoft Online Services,这是一整套由微软托管运行的向用户提供订阅服务的企业沟通协作解决方案,该企业级服务解决方案能够帮助各种经营规模的企业提高业务经营效率,而无需企业自己维护管理复杂的IT基础架构。针对企业的服务主要包括Exchange Online、SharePoint Online、Office Communicator Online、Office Live Meeting、Dynamics CRM Online等。
写在最后
从2008年11月微软发布Windows Azure Platform到现在,将近2年的时间里,微软及其云计算平台开始慢慢发力、加大投入,目前在全球已经建立了6个数据中心,花费数十亿美元构建服务器集群,开放资源为开发者提供更多支持,Office Online开启网络办公,快速部署、降低总体拥有成本、易于迁移、按需服务及付费、开发资源丰富等都是微软云计算平台的优点。但是微软云计算平台也有不足,在价格方面,商用后所有应用和服务都不是免费的,这对技术爱好者和试用者来说缺少了一些吸引力;在云计算安全方面,账户的控制权在云计算服务提供商手中;自行托管和整合也面临着一些问题和挑战。有优势、有不足,但是微软声称在云计算领域会“全力以赴(all in)”,在将来“Dallas”平台会商用,Dynamics CRM Services也会移植到云计算平台上。不仅如此,微软生产和销售的所有软件将会被重新写到Azure平台的云中运行,这是一项浩大的工程,更是微软转变商业模式、迎接云时代做出的重大转变。结果如何,我们拭目以待!
【编辑推荐】