[编者按]通过前面两章对云计算的介绍,读者对云计算的基本组成、体系结构、它与其他分布式计算技术等应该有了一个比较深入的了解。这篇文章将介绍云计算的计算模型,了解目前为大众推崇的Google云计算平台上典型的分布计算是如何进行的。接着分析了云计算领域先驱者成功的关键因素,这对有意投入云计算领域的企业能有所借鉴。最后作者从云计算模式、运营模式、以及可靠、安全与隐私等方面讨论了与云计算相关的经济技术问题以及未来云计算的发展趋势。
7 云计算的计算模型
尽管学术界和企业界有许多研究人员提出了各种各样的云系统模型,但是大多都没有涉及采用云计算解决问题时的计算模型问题。为了解决云中服务器群之间的通信和协作, Google提出了被后人称为云计算三大法宝的GFS、BigTable 和MapReduce技术。正是这些技术才使得Google可以让几十万台甚至上百万台计算机一起形成“云”,组成强大的数据中心。
7.1 GFS - Google文件系统
桌面应用和Internet应用有着巨大的差别。GFS是Google公司开发的专属分布式文件系统,为了在大量廉价硬件上提供有效可靠的数据访问而设计。
GFS针对Google的核心数据存储和使用需求进行优化,用于保存搜索引擎所产生的大量数据。Google的Internet搜索计算借鉴函数式编程模式,函数式操作不会修改原始数据而总是产生新的计算结果数据。因而其应用特点是产生大量的巨型文件,通常以读为主,可以追加但很少重写,具有非常高的吞吐率[1]。
GFS的设计将节点分成2类:一个主节点和大量的块服务器,块服务器用来保存数据文件。每个数据文件被划分成64 MB大小的块,每一个块都有一个唯一的64位标签以维护文件到块的逻辑映射。主节点只是存储数据块的元数据,包括64位标签到块位置及其组成的文件的映射表,数据块副本位置,哪些进程正在读写或“按下”某一数据块的“快照”以便复制副本等信息。主节点定期从块服务器接受更新以保持元数据的最新状态。
变更操作授权通过限时租用实现,主节点在一定时期内只限时给一个进程授予修改数据块的权限。被修改的数据块服务器作为主数据块将更改信息同步到其他块服务器上的副本。通过多个冗余副本提供可靠性和可用性。
应用程序通过查询主节点从而获取文件/块的地址,然后直接和数据块服务器联系并最终取得相应的数据文件。
目前在Google中有超过200个Google文件系统 集群,一个集群可以由1 000 或者甚至5 000台机器构成。Google证明了用最廉价的机器搭建的云同样可以提供高可靠的计算和存储系统。
7.2 BigTable -数据库系统
BigTable是Google构建在GFS及Chubby(一种分布式锁服务)之上的一种压缩、高效的专属数据库系统,是一种结构化的分布式存储系统。这种数据库是一个稀疏的分布式多维度有序映射表,具有支持行关键字、列关键字、以及时间戳3个维度的索引[2]。允许客户端动态地控制数据的表现形式、存储格式和存储位置,满足应用程序对读写局部化的具体要求。
数据库表通过划分多个子表使其保持约200 MB大小从而实现针对GFS的优化。子表在GFS中的位置记录在多个特殊的被称为META1的子表的数据库中,通过查询唯一的META0子表来定位META1子表。BigTable的设计目的是为了支持PB级数据库,可以分布在上万台机器上,更多的机器可以方便加入而不必重新配置。
7.3 MapReduce——分布式计算编程模式
前面的GFS和BigTable是Google用于解决大规模分布环境中可靠地存储数据问题,而MapReduce则是Google提出的一个软件框架,以支持在大规模集群上的大规模数据集(通常大于1 TB)的并行计算。这是真正涉及云计算的计算模型[3]。
MapReduce架构设计是受到函数式程序设计中的两个常用函数映射(Map)和化简(Reduce)的启发,用来开发Google搜索结果分析时大量计算的并行化处理,比如文献词频的计算等。在函数式程序的设计中,Map和Reduce都是构建高阶函数的工具。
映射将某个给定的作用于某类元素的函数应用于该类元素的列表,并返回至一个新的列表,其中的元素是该函数作用到原列表中的每个元素得到的结果。比如:Map f [v1, v2, ..., vn] = [f (v1), f (v2), ..., f (vn)]。从这里可以看出,这些f 函数的计算是可以并行计算的。
MapReduce计算模型对于有高性能要求的应用以及并行计算领域的需求非常适合。当需要对大量数据做同样计算的时候,就可以把数据进行划分,然后分配到不同的机器上来分别作计算。
化简将一个列表中的元素按某种计算方式(函数)进行合并。比如把一个二元运算f扩展到n元运算:Reduce f [v1, v2, ..., vn]= f (v1,(reduce f [v2, ..., vn]) =f ( v1, f (v2, (reduce f [v3, ..., vn])) = f (v1, f (v2, f ( ... f (vn-1, vn)...))。MapReduce计算模型将上面映射操作的计算中间结果采用化简进行合并,以得到最后结果。
通过将输入数据自动切片而将映射调用分布在多台机器上,进而再对中间结果的键值空间进行划分而将化简调用分布到多台机器上。当用户程序调用MapReduce函数时,MapReduce的操作的大致流程如图8所示。
首先将数据文件切分成M片,然后启动集群上的多个程序拷贝。
一份特殊的拷贝是主节点,而其它的则均为从节点。主节点将“映射”或“化简”的任务分配给空闲的从节点。
被赋予映射任务的从节点读入相应输入数据片内容,分析其键/值对并将其传递给用户定义的映射函数。映射函数产生的中间结果键/值对在内存中缓存。
缓存的键/值对定期写入本地磁盘,经由划分函数分成R块。这些缓存的键/值对在本地磁盘中地址被传回主节点,由其负责将地址转发给化简从节点。
当一个化简从节点收到主节点发来的地址时,它用远程过程调用读取映射缓存在磁盘里的数据。当化简从节点从其分块读取所有中间数据时,先按键值对其排序从而使相同键的所有数据被放置在一起。
化简从节点迭代处理这些有序的中间数据,针对每个中间键值它将对应的一组中间值传给用户的化简函数。化简函数的输出被追加到该化简块。
当所有映射和化简任务完成后,主节点则会通知用户程序。此时,用户程序中的MapReduce调用返回到用户代码。
完成后MapReduce执行的输出结果就在R个输出文件中。用户可以将其合并,也可以作为下一次mapreduce调用或其它分布式应用的输入之用。
7.4 Apache Hadoop——分式式系统基础架构
Google的GFS、BigTable和MapReduce技术是公开的,但是其实现却是私有的。该项技术在开源社区里最具代表性的实现就是Apache软件基金会Hadoop 项目了。Hadoop是受Google的MapReduce和GFS的启发而开发的一个开源Java软件框架,包括一个基于函数式编程的并行计算模型和分布式文件系统。 Hadoop中还有一个数据库Hbase,它实现了一个类似BigTable的分布式数据库,用于支持数据密集型分布式应用,可以在上千个的节点上运行,支持PB级数据量[4]。
Hadoop最初开发是用于支持Nutch搜索引擎项目,后来Yahoo投入大量资金并在其Web搜索广告业务中广泛地使用Hadoop。IBM和Google则发起一项活动,采用Hadoop以支持大学的分布式计算机编程课程,这也极大促进了云计算在全球的普及。
8 成功案例分析
目前,云计算还应该算是新生事物。虽然现在许多IT巨头都在开发自己的云计算基础设施、平台、软件、服务等等,但是真正成为云计算提供者并取得巨大成功的并不多,更多的是企业或机构构建自己的云计算实验平台。由于篇幅限制,这里只选择几个案例进行分析讨论。
8.1 Google
Google是云计算的应用导向。因为Google搜索引擎的需要,才自行设计开发了其独特的大规模分布式计算平台,其强项是对海量数据的分析挖掘。强大的云计算平台和分析算法造就了Google在搜索领域的霸主地位。
Google的基础设施可以分为3层结构:
2010年3月9日,Google正式宣布Google 应用商店(Google Apps Marketplace)开始商业运营,从而将“应用商店”的概念引入到云计算的领域。
Google依靠大家熟知的Gmail、Docs、Sites和Calendar等应用创造了庞大的用户群。Google 应用商店为Google用户提供各类产品和服务,包括可安装的能直接集成GoogleApps的应用程序。这些应用程序非常容易使用,支持单点登录、Google的通用导航、以及能集成用户自己的数据的特性[5]。
现在Google 应用商店已经聚集了一些颇为新奇的企业云应用。其中之一就是财务软件开发商 Intuit 的在线工资表业务,将 Google Apps 与 Intuit 的网络版工资表应用进行整合,员工只需要点击 Google Calendar 中的一个图标便可以下载工资单。
另一款惹眼的应用是 Manymoon,融合了Google账户和Google Apps产品,整合了状态消息、文件编辑等功能,实现了完全社会化的项目协作。Google 应用商店的运作模式就是基于它的用户市场,吸纳第三方开发者进行开发,与开发者利润分成。形成Google、用户和第三方开发者三赢的局面。
8.2 Amazon
Amazon弹性计算云(EC2)允许客户租用计算机运行自己的应用程序。客户可以通过EC2提供的Web服务接口创建虚拟机(即服务器实例)以运行其应用软件,从而实现应用部署的可扩展性。客户可以按需创建、启动、终止服务器实例,并按实际活跃服务器按时付费,故称为“弹性的”[6]。
Amazon云计算平台除了上述“弹性”和配置灵活外,其做法也与Google不同,它直接提供裸机(虚拟机),可配置静态IP地址,用户对其有绝对的控制,可以运行自己开发的应用程序。并且可以方便的和Amazon提供的其他Amazon Web Services如S3,SimpleDB等集成。EC2通过设置防火墙控制虚拟机实例之间的网络访问,也可以建立Amazon虚拟私云(VPC)并连入企业IT基础设施。
Amazon在云计算方面的成功并非是其一开始就打算成为云计算供应商,而是由于其在电子商务方面的出色成就,想将庞大的闲置资源通过其先进的网络服务技术提供给需要的人们使用。另外,可能许多读者不知道,Amazon的云计算技术是在网络计算服务的基础上发展起来的。
8.3 Salesforce
Salesforce.com是一家提供商务软件的SaaS(软件即服务)公司,用户每个月需要支付类似租金的费用来使用网站上的各种服务。最著名的产品是客户关系管理(CRM),以SaaS模式通过Internet提供业务。服务涉及客户关系管理的各个方面,从普通的联系人管理、产品目录到订单管理、机会管理、销售管理等。2009年获《福布斯》杂志选为发展最迅速的科技公司,排名仅次Google。并成为首家年度收入达10亿美元的企业云计算公司。目前全球已有7.5万客户在使用SalesforceCRM,其中包括:Google,Cisco,Starbucks,Deutsche Bank Prestitempo分部等等[7]。
Sales Cloud可以满足销售代表开展工作的一切需要,使他们用于管理的时间得以缩减,从而有更多的时间完成客户交易。Sales Cloud为销售经理提供了团队活动的实时可见性。Service Cloud是一个现代客户服务平台,从而使得客户能够通过各种渠道(从呼叫中心到社交网站)获得更高效且响应更快捷的服务。
每个企业的CRM 解决方案都是各不相同,而 Force.com 的云平台却是 CRM 的一个完美的基础。因为在“云端”,CRM 应用程序永远不会被基础技术所限制,用户可以根据业务的发展实时进行自定义和更改。Force.com 的AppExchange是一个第三方为Salesforce开发的应用程序目录,用户可以购买并加入到他们自己的Salesforce环境中。2009年由12万4千名开发商在Force.com度身订做共10万项应用程序。应用程序也可以融入来自Google等的服务。
Salesforce成功的关键是其一流的销售应用程序,为广大企业所推崇。而云计算平台则是帮助Salesforce实现了在互联网上将应用程序包装成服务发布,促成了Salesforce的大规模成功。
9 云计算一些相关问题及未来发展
云计算走入人们的视野已经3年多了,IT巨子以及企业都在研发部署云计算环境、平台、服务,真可谓是风起云涌。然而各界对于云计算的争论依旧在延续着,总觉得到底什么是云还是没有说清楚,尤其是和之前的若干分布式计算技术的比较,采用云计算究竟能给我们带来什么,未来的云计算又会是怎么样的等等问题。下面简单谈谈云计算的一些相关问题及其发展。这里主要是作者的观点,供读者参考。
9.1 云——称谓之争
学术界和企业界对云计算的态度还是有些不同的,有一点犹抱琵琶半遮面的味道。
中国的云计算专家委员会是在中国电子学会而非计算机学会下成立的,也是一件非常有意思的事情。
Foster则撰文认为云计算和网格计算在愿景、体系结构以及技术方面有许多相似之处,而在安全、编程模式、商业模式、计算模型、数据模型、应用和抽象等方面多多少少存在一些差异。
国内学者也有提出“云格”,有意将云计算和网格计算融合在一起,即在网格计算环境中同时提供云计算服务[8]。
其实随着技术的发展进步,还会出现更多新的计算称谓。我们不必太在意到底该如何定义什么是云计算、或它具有什么特性,关键是这样一种计算平台、计算环境能够解决实际的科学计算或企业计算问题即可。采用何种技术、何种运行模式都不是最重要的。正如《九方皋相马》所讲故事一样。秦穆公差九方皋找千里马,3个月后他返回报告说:“已经得到1匹黄色母马,在沙丘。”取回却是1匹黑色公马。穆公不高兴,而伯乐却感叹道:“九方皋所观察的竟然到了这种地步,省察其内部而忘却其表象。”马到达,果然是天下至奇的好马!
9.2 运营模式
各界对云计算的鼓吹中最大的亮点就是pay-per-use商业模式,即按用户对资源的使用量进行付费。可是这并没有定义什么是云,而且商业模式和被运行的云计算系统没有直接的关系。如同电信网运营中大家知道的2个概念:运营支撑系统(OSS)和基站子系统(BSS),BSS才和商业模式相关。所以pay-per-use商业模式并不涉及到云计算本身,任何系统只要能够对被使用的资源进行计量即可按一定的商业模式运营。换句话说,如果网格系统能够投入商业运营,也完全可以采用pay-per-use的商业模式[9]。
大家都在谈论云计算有多么多么神奇,不仅学术界甚至许多企业也在创建自己的云计算平台来构建所谓的私有云。但是也有批评者认为“没有私有云这个东西”,因为若用户“仍然需要购买、搭建和管理私有云”,则显然不能在降低前端资本投资和减少管理方面受益,而恰恰是这种号称能“降低前端资本投资和减少管理”的经济模型才成就了云计算这个奇妙的东西。
此外,Apple的IPhone手机以其创新的用户界面受到广泛的欢迎,IPhone用户可以在Apple的应用程序商店购买所需的各类应用程序。这也已成为一个很好的成功的运营模式,现在的Google应用商店正是基于Gmail的巨大用户群而采用了同样的运营模式。
9.3 云服务提供商
还有一个问题是,到目前为止,云计算总是说能给用户节约投资,但是似乎还没有人来给投资者(云计算服务提供商)算一算如何盈利的帐。下面介绍他们的成功是靠什么来盈利的。
Google是为了其主营的搜索业务需要存储海量的搜索数据而开发了GFS和BigTable,为搜索的快速计算而开发了MapReduce框架,Google的盈利是靠其主营的搜索业务带来的巨额广告收入。另一方面,Google的数据中心是建在水电站边上的,这是为了节约能源成本。Amazon的成功则是基于这样一个前提:Amazon在构建自己的电子商务平台时采用了大量计算机系统,但是实际运营中并不需要那么多的计算机设备。为了这些设备不至于闲置浪费,于是通过虚拟化技术将这些计算机设施打包成服务提供给需要的客户使用。据称腾讯每年的电费也是几亿元人民币。
Salesforce的成功完全取决于其为大众所推崇的全球首屈一指的销售应用程序。一个企业要想成为运服务提供商,先得看看自己是否有这样的利器。阿里巴巴2010年3月2日公告称将于4月30日起关闭阿里软件互联平台并终止提供相关服务,有评论质疑SaaS 免费还能走多久?但是我们是否可以问一个问题:该CRM软件是否足够好呢?免费是一种钓鱼策略,先让用户尝到甜头,然后当用户对你产生依赖时再向其收费。当然这是有前提的:一是服务软件要足够好,二是价格能够承受。你的服务软件是否能够为企业业务能力的提升做出贡献进而为企业带来利润?如果不能,即使是免费的软件也不会有市场。如果是,还要看看是否打压了用户的利润空间,是否能承受服务费用。
IBM已经在无锡太湖新城科教产业园建立了中国第一个云计算中心,但是到目前为止还没有听说有过哪些企业进驻了该云计算中心。如果哪家企业或机构想要自己独立成为一个云计算运营商,那可就要慎重一点了。除了拥有先进的分布计算平台,优秀的服务软件,还必须要压缩运营成本,才能为用户带来所期望的、优质、廉价的云服务。急功近利甚至暴利肯定是不利于互联网应用的发展的。
9.4 可靠、安全与隐私
2008年的相关报道称:Amazon的S3因认证服务过载导致不可用,故障持续2小时,后来的gossip协议风暴导致故障持续将近8小时。Gmail及Google Apps因联系人系统故障以及程序错误导致故障持续数小时。在云的世界里最怕的就是多云转雨了。本来好好的一朵云彩,积成雨水下雨后就没有云彩了。依赖于云计算的用户发现云没了,当然会影响其业务运营。但是,普通计算环境中这样的故障也会经常出现,因此可靠性、可用性并不是云计算带来的问题。相反,云计算环境中系统的冗余特性极大提高了云服务平台的可靠性和可用性。
关于云计算的安全性,当今所有的信息安全技术都可以用于云计算环境,专业团队打造的云计算环境只会比普通的计算系统更加安全。就像钱还是存放在银行里更安全些一样。其实,许多人关注的安全问题更主要是指隐私问题。美国人就很担心如果把数据放置在一家云运营商里,一旦政府下令,其数据就会被政府查获。对于这一点,我们认为如果建立一个大云,即云计算运营商把他们的云都合在一起,大家互通有无,同时普通企业也把自己的私有云整合在里边,这时存储位于整个大云中,其他人并不能知道你的数据在哪家云服务商的哪些存储设备上了。国内企业可能更担心数据保密问题,把数据放在云运营商那里不放心。这实际上依然是一个“信任”问题。如果你不信任银行,那你的钱只能放在自己的枕头底下了。安全技术是用来防黑客攻击的,而信任问题则需要通过大家一起建立一个良好的商业生态环境来解决。
9.5 未来的云计算
将计算力作为一种公共事业设施来提供一直是人类的一个梦想。云计算就是要实现这个梦想。先来看看Google今后的目标:
由此可以看出,构建地域分布的大规模基础设施仍然是云计算领域的一个重要技术课题。另外,Google的MapReduce架构也是有一定局限性的。虽然映射和化简两个函数非常适合大规模的并行计算,但是并非所有计算都能轻易转换成MapReduce方式进行计算的。一般性问题的并行计算算法设计依然是一个重大的挑战[10]。
从Salesforce的成功经验也可以看出,实际上用户更需要能够解决实际问题的最好的云计算应用软件。因此,构建新型的云计算应用程序,为用户提供更加丰富的体验,如facebook等,已经体现了云计算的一个发展趋势,而如何通过云计算基础平台将多个业务融合起来则是另一研究趋势。
从云计算提供商角度看,采用商用计算、存储和网络设施来建设超大规模数据中心,按即用即付的模式来销售这些资源,其成本有可能以比中等规模的数据中心更低。同时由于在大客户群体之间的错时共享而更多获利。
从云计算用户的角度来看,云设施可以作为新软件公司构建自己的数据中心的一个起点,同时也可以摆脱传统方式中由自己内部数据中心提供服务时可能出现的过载和不足这样的双重风险。此外,其他公司或机构也同样能从云计算的“弹性”中受益。
我们认为云计算服务交易市场的模式可能更适合云计算的未来发展。企业或机构不是纯粹作为一个云计算提供商或云计算用户,而是可以按自己的平均计算业务量来建设云计算平台(私有云),来支持和推动企业的业务发展。同时加入到全球性的大云中,形成所谓的互联云。就像当年网络兴起时企业各自构建网络,后来由于传输控制协议/因特网互联协议(TCP/IP)的出现而形成现在的Internet。这样当企业计算资源超负荷时,可以使用互联云环境中其他云资源,而当自己的资源空闲时,则可以将资源提供给其他用户使用。这其中可以按市场机制对资源进行定价计费,各方按使用它方资源量进行付费,同时通过出让其资源而获得其应有的利润。
构建互联云的好处还可以避免由于过分依赖于某个云计算服务提供商而产生的垄断行为,只有这样多赢的局面才能使得云计算获得成功。
总之,云计算就是要把硬件、软件、平台、应用、服务等一切资源都集成起来,同时提供非常简单的接口,让用户方便的使用云资源。 (续完)
10 参考文献
[1] 云计算.维基百科[EB/OL]. http://zh.wikipedia.org或http://en.wikipedia.org, [2010-02-05].
[2] 中国云计算-提供经过消化的中文云计算信息[EB/OL]. http://www.chinacloud.cn, [2010-04-03].
[3] LENK A, KLEMS M, NIMIS j,et al. What’s inside the cloud? An architectural map of the cloud landscape[C]//Proceedings of the 2009 ICSE Workshop on Software Engineering Challenges of Cloud Computing (CLOUD’09),May 23, 2009, Vancouver, Canada. Washington, DC, USA: IEEE Computer Society, 2009: 23-31.
[4] HAYES B. Cloud computing[J]. Communications of the ACM,2008,51(7):9-11.
[5] FOSTER I, ZhAO Y, RAICU I,et al. Cloud computing and grid computing 360-degree compared[C]// Proceedings of the 2008 Grid Computing Environments Workshop (GCE’08),Nov 12-16,2008, Austin, TX,USA. Washington, DC, USA: IEEE Computer Society, 2008:10p.
[6] GEELAN J. Twenty-one experts define cloud computing[J/OL]. Cloud Computing Journal(2009-01-24). http://cloudcomputing.sys-con.com/node/612375.
[7] ZHANG Liang-jie,ZHOU Qun. CCOA: Cloud computing open architecture[C]// Proceedings of the IEEE 7th International Conference on Web Services (ICWS’09), Jul 6-10, 2009, Los Angeles, CA, USA. Washington, DC, USA: IEEE Computer Society, 2009: 607-616.
[8] ARMBRUST M, FOX A, GRIFFITH R, et al. Above the clouds: A Berkeley view of cloud computing[R]. Technical Report UCB/EECS-2009-28. Electrical Engineering and Computer Sciences, University of California, Berkeley. 2009.
[9] BUYYAR R, YEO Chee Shin, vENUGOPAL s, et al. Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility[J]. Future Generation Computer Systems,2009, 25 (6): 599-616.
[10] DEAN j, Ghemawat s. MapReduce: Simplified data processing on large clusters[J]. Communications of the ACM,2008,51(1):107-113.
收稿日期:2010-04-02