学科前沿技术专题第十三章
Google、Amazon、IBM、微软云计算主要平台及特性
技术特性:储存及运算水平扩充能力
核心技术:平行分散技术MapReduce,BigTable,GFS
企业服务:Google AppEngine,应用代管服务
开发语言:Python,Java
Amazon
技术特性:弹性虚拟平台
核心技术:虚拟化技术Xen
企业服务:EC2、S3,SimpleDB、SQS
IBM
技术特性:整合其所有软件及硬件服务
核心技术:网格技术,分布式存储,动态负载
企业服务:虚拟资源池提供,企业云计算整合方案
微软
技术特性:整合其所用软件及数据服务
核心技术:大型应用软件开发技术
企业服务:Azure平台
开发语言:.NET
一、Google 的云计算平台
Google的硬件条件优势,大型的数据中心、搜索引擎的支柱应用,促进Google云计算迅速发展。Google的云计算主要由MapReduce、Google文件系统(GFS)、BigTable组成。它们是Google内部云计算基础平台的3个主要部分。Google 还构建其他云计算组件,包括一个领域描述语言以及分布式锁服务机制等。Sawzall是一种建立在MapReduce基础上的领域语言,专门用于大规模的信息处理。Chubby是一个高可用、分布式数据锁服务,当有机器失效时,Chubby使用Paxos算法来保证备份。
(1)Google File System 文件系统
为了满足Google迅速增长的数据处理需求,Google设计并实现了Google文件系统(GFS,Google File System)。GFS与过去的分布式文件系统拥有许多相同的目标,例如性能、可伸缩性、可靠性以及可用性。然而,它的设计还受到Google应用负载和技术环境的影响。主要体现在以下四个方面:
1. 集群中的节点失效是一种常态,而不是一种异常。由于参与运算与处理的节点数目非常庞大,通常会使用上千个节点进行共同计算,因此,每时每刻总会有节点处在失效状态。需要通过软件程序模块,监视系统的动态运行状况,侦测错误,并且将容错以及自动恢复系统集成在系统中。
2. Google系统中的文件大小与通常文件系统中的文件大小概念不一样,文件大小通常以G字节计。另外文件系统中的文件含义与通常文件不同,一个大文件可能包含大量数目的通常意义上的小文件。所以,设计预期和参数,例如I/O操作和块尺寸都要重新考虑。
3. Google文件系统中的文件读写模式和传统的文件系统不同。在Google应用(如搜索)中对大部分文件的修改,不是覆盖原有数据,而是在文件尾追加新数据。对文件的随机写是几乎不存在的。对于这类巨大文件的访问模式,客户端对数据块缓存失去了意义,追加操作成为性能优化和原子性(把一个事务看做是一个程序。它要么被完整地执行,要么完全不执行)保证的焦点。
4. 文件系统的某些具体操作不再透明,而且需要应用程序的协助完成,应用程序和文件系统API的协同设计提高了整个系统的灵活性。例如,放松了对GFS一致性模型的要求,这样不用加重应用程序的负担,就大大简化了文件系统的设计。还引入了原子性的追加操作,这样多个客户端同时进行追加的时候,就不需要额外的同步操作了。
(2)MapReduce分布式编程环境
为了让内部非分布式系统方向背景的员工能够有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员也能够为大规模的集群编写应用程序而不用去顾虑集群的可靠性、可扩展性等问题。应用程序编写人员只需要将精力放在应用程序本身,而关于集群的处理问题则交由平台来处理。
Map/Reduce通过“Map(映射)”和“Reduce(化简)”这样两个简单的概念来参加运算,用户只需要提供自己的Map函数以及Reduce函数就可以在集群上进行大规模的分布式数据处理。
(3)分布式大规模数据库管理系统BigTable
构建于上述两项基础之上的第三个云计算平台就是Google关于将数据库系统扩展到分布式平台上的BigTable系统。很多应用程序对于数据的组织还是非常有规则的。一般来说,数据库对于处理格式化的数据还是非常方便的,但是由于关系数据库很强的一致性要求,很难将其扩展到很大的规模。为了处理Google内部大量的格式化以及半格式化数据,Google构建了弱一致性要求的大规模数据库系统BigTable。
二、Amazon的弹性计算云
Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上,而用户可以通过弹性计算云的网络界面去操作在云计算平台上运行的各个实例(instance)。用户使用实例的付费方式由用户的使用状况决定,即用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束。这里所说的实例即是由用户控制的完整的虚拟机运行实例。通过这种方式,用户不必自己去建立云计算平台,节省了设备与维护费用。
亚马逊是互联网上最大的在线零售商,但是同时也为独立开发人员以及开发商提供云计算服务平台。亚马逊将他们的云计算平台称为弹性计算云(Elastic Compute Cloud,EC2),它是最早提供远程云计算平台服务的公司。
Amazon EC2 (Elastic Compute Cloud)是一个让用户可以租用云电脑运行所需应用的系统。EC2借由提供web服务的方式让用户可以弹性地运行自己的Amazon机器镜像文件,用户将可以在这个虚拟机上运行任何自己想要的软件或应用程序。
用户可以随时创建、运行、终止自己的虚拟服务器,使用多少时间算多少钱,也因此这个系统是"弹性"使用的。EC2让用户可以控制运行虚拟服务器的主机地理位置,这可以让延迟还有备援性最高。例如,为了让系统维护时间最短,用户可以在每个时区都运行自己的虚拟服务器。Amazon以Amazon Web Services (AWS)的品牌提供EC2的服务。
EC2的主要特性:
(1)灵活性:可自行配置运行的实例类型、数量,还可以选择实例运行的地理位置。可以根据用户的需求随时改变实例的使用数量。
(2)低成本:按小时计费
(3)安全性:SSH、可配置的防火墙机制、监控等
(4)易用性:用户可以根据Amazon提供的模块自由构建自己的应用程序,同时EC2还会对用户的服务请求自动进行负载平衡
(5)容错性:弹性IP
三、IBM“蓝云”计算平台
“蓝云”解决方案是由IBM云计算中心开发的企业级云计算解决方案。该解决方案可以对企业现有的基础架构进行整合,通过虚拟化技术和自动化技术,构建企业自己拥有的云计算中心,实现企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,打破应用对资源的独占,从而帮助企业实现云计算理念。
IBM在2007年11月15日推出了蓝云计算平台,为客户带来即买即用的云计算平台。它包括一系列的云计算产品,使得计算不仅仅局限在本地机器或远程服务器农场(即服务器集群),通过架构一个分布式、可全球访问的资源结构,使得数据中心在类似于互联网的环境下运行计算。“蓝云”建立在IBM大规模计算领域的专业技术基础上,基于由IBM软件、系统技术和服务支持的开放标准和开源软件。简单地说,“蓝云”基于IBM Almaden研究中心(Almaden Research Center)的云基础架构,包括Xen和PowerVM虚拟化、Linux操作系统映像以及Hadoop文件系统与并行构建。“蓝云”由IBM Tivoli软件支持,通过管理服务器来确保基于需求的最佳性能。这包括通过能够跨越多服务器实时分配资源的软件,为客户带来一种无缝体验,加速性能并确保在最苛刻环境下的稳定性。蓝云计算平台由一个数据中心: IBM Tivoli部署管理软件(Tivoli Provisioning Manager)、IBM Tivoli监控软件(IBM Tivoli Monitoring)、IBM WebSphere应用服务器、IBM DB2数据库以及一些虚拟化的组件共同组成。
蓝云的硬件平台并没有什么特殊的地方,但是蓝云使用的软件平台相较于以前的分布式平台具有不同的地方,主要体现在对与虚拟机的使用以及对于大规模数据处理软件Apache Hadoop的部署。
(1)“蓝云”中的虚拟化
虚拟化的方式在云计算中可以在两个级别上实现。一个级别是在硬件级别上实现虚拟化。硬件级别的虚拟化可以使用IBM p系列的服务器,获得硬件的逻辑分区LPAR。逻辑分区的CPU资源能够通过IBM Enterprise Workload Manager来管理。通过这样的方式加上在实际使用过程中的资源分配策略,能够使得相应的资源合理地分配到各个逻辑分区。P系列系统的逻辑分区最小粒度是1/10颗中央处理器(CPU)。
虚拟化的另外一个级别可以通过软件来获得,在蓝云计算平台中使用了Xen虚拟化软件。Xen也是一个开源的虚拟化软件,能够在现有的Linux基础之上运行另外一个操作系统,并通过虚拟机的方式灵活地进行软件部署和操作。
通过虚拟机的方式进行云计算资源的管理具有特殊的好处。由于虚拟机是一类特殊的软件,能够完全模拟硬件的执行,因此能够在上面运行操作系统,进而能够保留一整套运行环境语义。这样,可以将整个执行环境通过打包的方式传输到其他物理节点上,这样就能够使得执行环境与物理环境隔离,方便整个应用程序模块的部署。总体上来说,通过将虚拟化的技术应用到云计算的平台,可以获得一些良好的特性:
1. 云计算的管理平台能够动态地将计算平台定位到所需要的物理平台上,而无需停止运行在虚拟机平台上的应用程序,这比采用虚拟化技术之前的进程迁移方法更加灵活。
2. 能够更加有效率地使用主机资源,将多个负载不是很重的虚拟机计算节点合并到同一个物理节点上,从而能够关闭空闲的物理节点,达到节约电能的目的。
3. 通过虚拟机在不同物理节点上的动态迁移,能够获得与应用无关的负载平衡性能。由于虚拟机包含了整个虚拟化的操作系统以及应用程序环境,因此在进行迁移的时候带着整个运行环境,达到了与应用无关的目的。
4. 在部署上也更加灵活,即可以将虚拟机直接部署到物理计算平台当中。
(2)“蓝云”中的存储结构
蓝云计算平台中的存储体系结构对于云计算来说也是非常重要的,无论是操作系统,服务程序还是用户应用程序的数据都保存在存储体系中。云计算并不排斥任何一种有用的存储体系结构,而是需要跟应用程序的需求结合起来获得最好的性能提升。总体上来说,云计算的存储体系结构包含类似于Google File System的集群文件系统以及基于块设备方式的存储区域网络SAN两种方式。
在设计云计算平台的存储体系结构的时候,不仅仅是需要考虑存储的容量。实际上随着硬盘容量的不断扩充以及硬盘价格的不断下降,使用当前的磁盘技术,可以很容易通过使用多个磁盘的方式获得很大的磁盘容量。相较于磁盘的容量,在云计算平台的存储中,磁盘数据的读写速度是一个更重要的问题。单个磁盘的速度很有可能限制应用程序对于数据的访问,因此在实际使用的过程中,需要将数据分布到多个磁盘之上,并且通过对于多个磁盘的同时读写以达到提高速度的目的。在云计算平台中,数据如何放置是一个非常重要的问题,在实际使用的过程中,需要将数据分配到多个节点的多个磁盘当中。而能够达到这一目的的存储技术趋势当前有两种方式,一种是使用类似于Google File System的集群文件系统,另外一种是基于块设备的存储区域网络SAN系统。
Google文件系统在前面已经做过一定的描述。在IBM的蓝云计算平台中使用的是它的开源实现Hadoop HDFS (Hadoop Distributed File System)。这种使用方式将磁盘附着于节点的内部,并且为外部提供一个共享的分布式文件系统空间,并且在文件系统级别做冗余以提高可靠性。在合适的分布式数据处理模式下,这种方式能够提高总体的数据处理效率。Google文件系统的这种架构与SAN系统有很大的不同。
SAN系统也是云计算平台的另外一种存储体系结构选择,在蓝云平台上也有一定的体现,IBM也提供SAN的平台能够接入到蓝云计算平台中。
SAN系统是在存储端构建存储的网络,将多个存储设备构成一个存储区域网络。前端的主机可以通过网络的方式访问后端的存储设备。而且,由于提供了块设备的访问方式,与前端操作系统无关。在SAN连接方式上,可以有多种选择。一种选择是使用光纤网络,能够操作快速的光纤磁盘,适合于对性能与可靠性要求比较高的场所。另外一种选择是使用以太网,采取iSCSI协议,能够运行在普通的局域网环境下,从而降低了成本。由于存储区域网络中的磁盘设备并没有与某一台主机绑定在一起,而是采用了非常灵活的结构,因此对于主机来说可以访问多个磁盘设备,从而能够获得性能的提升。在存储区域网络中,使用虚拟化的引擎来进行逻辑设备到物理设备的映射,管理前端主机到后端数据的读写。因此虚拟化引擎是存储区域网络中非常重要的管理模块。
SAN系统与分布式文件系统例如Google File System并不是相互对立的系统,而是在构建集群系统的时候可供选择的两种方案。其中,在选择SAN系统的时候,为了应用程序的读写,还需要为应用程序提供上层的语义接口,此时就需要在SAN之上构建文件系统。而Google File System正好是一个分布式的文件系统,因此能够建立在SAN系统之上。总体来说,SAN与分布式文件系统都可以提供类似的功能,例如对于出错的处理等。至于如何使用还是需要由建立在云计算平台之上的应用程序来决定。
与Google不同的是,IBM并没有基于云计算提供外部可访问的网络应用程序。这主要是由于IBM并不是一个网络公司,而是一个IT的服务公司。当然,IBM内部以及IBM未来为客户提供的软件服务会基于云计算的架构。
四、 微软云计算平台:Windows Azure
Windows Azure是微软基于云计算的操作系统,和Azure Services Platform一样,是微软“软件和服务”技术的名称。Windows Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序。云计算的开发者能使用微软全球数据中心的储存、计算能力和网络基础服务。Azure服务平台包括了以下主要组件:Windows Azure;Microsoft SQL数据库服务,Microsoft .Net服务;用于分享、储存和同步文件的Live服务;针对商业的Microsoft SharePoint和Microsoft Dynamics CRM服务。
The Azure Services Platform (Azure)是一个互联网级的运行于微软数据中心系统上的云计算服务平台,它提供操作系统和可以单独或者一起使用的开发者服务。Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决方案的选择。
Windows Azure以云技术为核心,提供了软件+服务的计算方法。 它是Azure服务平台的基础。Azure用于帮助开发者开发可以跨越云端和专业数据中心的下一代应用程序,在PC、Web和手机等各种终端间创造完美的用户体验。
Azure能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。这样,开发者就可以在“云端”和“客户端”同时部署应用,使得企业与用户都能共享资源。
Windows Azure是专为在微软建设的数据中心管理所有服务器,网络以及存储资源所开发的一种特殊版本Windows Server操作系统,它具有针对数据中心架构的自我管理(autonomous)机能,可以自动监控划分在数据中心数个不同的分区(微软将这些分区称为Fault Domain)的所有服务器与存储资源,自动更新补丁,自动运行虚拟机部署与镜像备份(Snapshot Backup)等能力,Windows Azure被安装在数据中心的所有服务器中,并且定时和中控软件:WindowsAzure Fabric Controller进行沟通,接收指令以及回传运行状态数据等等,系统管理人员只要通过Windows Azure Fabric Controller就能够掌握所有服务器的运行状态,Fabric Controller本身是融合了很多微软系统管理技术的总成,包含对虚拟机的管理(System Center Virtual Machine Manager),对作业环境的管理(System Center Operation Manager),以及对软件部署的管理(System Center Configuration Manager)等,在Fabric Controller中被发挥得淋漓尽致,如此才能够达成通过Fabric Controller来管理在数据中心中所有服务器的能力。
Azure服务平台的设计目标是用来帮开发者更容易地创建web和互联设备的应用程序。它提供了最大限度的灵活性、选择和使用现有技术连接用户和客户的控制。Windows Azure服务平台现在已经包含如下功能:网站、虚拟机、云服务、移动应用服务、大数据支持以及媒体功能的支持。
(1)网站
允许使用 ASP.NET、PHP 或 Node.js 构建,并使用 FTP、Git 或 TFS 进行快速部署。支持 SQL Database、Caching、CDN及Storage。
(2)Virtual Machines
在Windows Azure上您可以轻松部署并运行 Windows Server 和 Linux 虚拟机。迁移应用程序和基础结构,而无需更改现有代码。支持 Windows Virtual Machines、Linux Virtual Machines、Storage、Virtual Network、 Identity等功能。
(3)Cloud Services
是Windows Azure 中的企业级云平台,使用富平台即服务 (PaaS) 环境创建高度可用的且可无限缩放的应用程序和服务。支持多层方案、自动化部署和灵活缩放。支持Cloud Services、SQL Database、Caching、Business Analytics、Service Bus、Identity
(4)Mobile 服务
是Windows Azure提供的移动应用程序的完整后端解决方案,加速连接的客户端应用程序开发。在几分钟内并入结构化存储、用户身份验证和推送通知。支持SQL Database、Mobile 服务。
(5)大型数据处理
Windows Azure 提供的海量数据处理能力,可以从数据中获取可执行洞察力,利用完全兼容的企业准备就绪 Hadoop 服务。PaaS 产品/服务提供了简单的管理,并与 Active Directory 和 System Center 集成。支持Hadoop、Business Analytics、Storage、SQL Database、及在线商店 Marketplace。
(6)Media 媒体支持
支持插入、编码、保护、流式处理,可以在云中创建、管理和分发媒体。此 PaaS 产品/服务提供从编码到内容保护再到流式处理和分析支持的所有内容。支持CDN及Storage存储