伯克利云计算白皮书MichaelArmbrust,ArmandoFox,ReanGriffith,AnthonyD.Joseph,RandyH.Katz,AndrewKonwinski,GunhoLee,DavidA.Patterson,ArielRabkin,IonStoica,MateiZaharia加州大学伯克利分校电子工程和计算机科学系译者按“云计算”一词自出现以来,在产业界和学术界就掀起了波澜,众说纷纭,莫衷一是。在一些人眼里(如Google、IBM),云计算是未来的方向、潮流和必然,他们迫不及待的拥抱云计算;而在另外一些人眼里(如Oracle公司总裁LarryEllison、GNU发起人RichardStallman),云计算只是又一个商业炒作的概念,毫无新意,甚至蠢不可及。在过去的一年中,已经有大量的关于云计算的文章见诸博客、报纸、杂志和严肃的学术刊物。但本文无疑是迄今为止关于云计算最重要的文章之一。文章的作者是分布式计算领域最有影响力的研究团队之一,领衔者DavidA.Patterson是计算机界的权威,曾担任伯克利计算机系主任和美国ACM主席,本文是他们长达六个多月工作的结果,详细解答了什么是云计算、和以前的模型如SaaS有什么不同、为什么现在是云计算发展的最佳时机、云计算将创造什么新的机遇、有哪些挑战以及如何应对等一系列问题。文章以内部技术报告方式发表于2009年2月10日,原文标题为“AbovetheCoulds:ABerkeleyViewofCloudComputing”。全文可从如下地址下载:。1内容提要云计算将实现效用计算1这一长久以来的梦想,它让软件变成更具吸引力的服务,重新定义IT硬件的设计和购买的方式,从而可能引发IT工业大规模的变革。开发者不再需要大量的硬件购置和维运资本就可以完成各种创新的网络服务。他们不必担心过度投资于不如预期受欢迎的服务而浪费了昂贵的资源;也不必担心对广受欢迎的服务投资不足而流失了潜在的客户和收入。此外,需要进行大批量任务的公司可以很快地得到处理结果,因为使用1000台服务器一小时的成本与使用一台服务器1000小时是一样的。这种资源的伸缩性、无需为大规模处理支付额外费用的特性,在IT历史上是前所未有的。云计算既包含互联网上的应用服务,也包含在数据中心提供这些服务的软硬件设施。互联网上的应用服务通常被称作SaaS,(SoftwareasaService,软件即服务),而数据中心的软硬件设施就是我们称作的云(Cloud)。云可区分为两种:公共云(PublicCloud)和私有云(PrivateCloud)。公共云是以即用即付(pay-as-you-go)的方式提供给公众的,这种可购买的服务即是效用计算。私有云是企业或组织内部数据中心的资源,这些资源是不提供于公众1译者注:效用计算,UtilityComputing,或译为效用计算,指让计算成为基础设施,人们象购买水电煤气一样购买计算服务。使用的。因此,云计算是针对SaaS及公共云的,人们既可以是SaaS的供应商或用户,也可以是效用计算的供应商或用户。SaaS用户在过去较受重视,但在这里我们将主要关注SaaS的供应商(即云用户)和云供应商。从硬件上看,云计算在三方面不同于过去:1.云计算能随需应变的提供似乎无限的计算资源,云计算终端用户无需再为计算力准备计划或预算。2.云用户(SaaS服务供应商)可以根据需要,逐步追加硬件资源,而不需要预先给出承诺。3.云计算提供其用户短期使用资源的灵活性(例如:按小时购买处理器或按天购买存储)。当不再需要这些资源的时候,用户可以方便的释放这些资源。我们认为:在低成本地区建立和运维超大规模商用数据中心是实现云计算的关键,因为这样可以在电力、网络带宽、运维、软件和硬件等5到7个方面降低成本。另外,相对于私有云,云计算中增加的资源具有复用性。这些因素都表明:云计算可以以低于中等规模数据中心的成本提供服务,并且获得很好的收益。任何应用都需要一个计算模型、一个存储模型和一个通信模型。云计算中,为了实现资源的弹性利用以及给用户造成资源无限的假象,必须实现资源的复用。这需要通过虚拟化技术,隐藏资源被复用和共享的具体细节来实现。我们的观点是不同的效用计算将由展现给开发者的抽象层次的不同和各种计算存储资源管理层次的不同这两者所决定的。Amazon(亚马逊公司)EC2是一个极端的例子。一个EC2的实例看起来很像一个物理硬件,用户可以控制其核心以外的几乎所有的软件。这种接近底层的方式,使其不能提供自动的可扩展性和容错性,因为语义相关的复制和状态的管理都是高度依赖于应用的。另外一个极端的例子就是像GoogleAppEngine这样的面向特定应用领域的平台。AppEngine专门针对传统的web应用程序,它限定应用架构必须介于一个无状态的计算层和一个有状态的存储层之间。AppEngine突出的自动伸缩性和高可用性机制,以及AppEngine应用专有的MegaStore数据存储,都是建立在AppEngine对应用结构的限制这一基础之上的。而微软的Azure则要求基于它的应用都必须使用.NET库,并且能被编译成CLR(CommonLanguageRuntime,一个开发语言无关的托管环境)格式。因此,Azure介于类似于AppEngine这样的应用框架和EC2这样的硬件虚拟机之间。对拥有私有云的公司或个人而言,什么时候更应该使用效用计算,而不是私有云服务呢?最典型的情况是当服务的需求随时间而变化的时候。例如,按峰值负载去部署系统的数据中心必然在其他时间闲置部分资源。而云计算是让机构按小时去购买计算资源。即使当按小时计算租赁机器会比实际购买系统分摊的成本费用高,但整体而言还是能够节约成本。第二种典型情况是无法提前估计未来的计算需求。例如当一个网站新开放,在未来既可能大受欢迎带来访问量的猛增,也可能无人问津,访问量锐减。第三种典型情况是批量分析处理的公司可以利用云计算更快的完成计算工作:使用1000台EC2机器一小时与使用一台机器1000个小时的花费是一样的。对于第一种情况,我们获得了以下的比较公式:公式的左边用每小时的净收入乘以用户小时数,表示使用云计算情况下的收益情况。公式的右边用同样的方式计算了一个固定容量数据中心的平均情形。哪一边更大,就意味着使用该种方式能获得更大的利润。表格1给出了我们认为阻碍云计算发展的重要因素,这些我们将在第7部分详细讨论。最前三条因素将影响是否采用云计算,接下来的五条是影响云计算发展的障碍,最后的两条是政策和商业上的障碍。对于每一条障碍,我们都给出了相对应的机遇,既包括产品开发也包括了一些可能的研究项目,为解决障碍提供了途径。表格1:云计算发展的10大挑战及相应的机会问题机会1服务的可用性选用多个云计算提供商;利用弹性来防范DDOS攻击2数据锁定标准化的API;使用兼容的软硬件以进行波动计算3数据安全性和可审计性采用加密技术,VLANs和防火墙;跨地域的数据存储4数据传输瓶颈快递硬盘;数据备份/获取;更加低的广域网路由开销;更高带宽的LAN交换机5性能不可预知性改进虚拟机支持;闪存;支持HPC应用的虚拟集群6可伸缩的存储发明可伸缩的存储7大规模分布式系统中的错误发明基于分布式虚拟机的调试工具8快速伸缩基于机器学习的计算自动伸缩;使用快照以节约资源9声誉和法律危机采用特定的服务进行保护10软件许可使用即用即付许可;批量销售我们预计云计算将发展壮大,开发人员应考虑到这一点。所有的层面应该更注重虚拟机的横向可扩展性而不是在单个虚拟机上的效率。此外,1.应用软件既要能快速向下分解,又要能向上组合,这是一个新的要求。同时软件需要采用基于使用量的支付模型来满足云计算的要求。2.基础软件需要清楚:它是在虚拟机上而不再是在逻辑上运行。而且它必须从一开始就内置了帐单功能。3.硬件系统应该被设计成像一个大的容器(至少12个机柜),这将是最小销售单位。运维的成本将与购置成本变得一样重要,当内存、磁盘和网络闲置的时候,可将其调至节能状态。处理器要求在虚拟机环境下能很好的工作,闪存应该被加入到存储层次结构中,局域网交换机和广域网路由器都需要在带宽和成本上进行改善。2云计算:一个即将实现的古老梦想云计算是计算作为基础设施这一长久以来梦想的新称谓,最近它正快速变为商业现实。云计算很可能将像芯片代工制造厂影响硬件工业一样对软件业产生巨大的影响。曾经,领先的硬件公司需要拥有半导体制造工厂,并且公司需要足够大从而才能节约其建造和运维的成本。然而,芯片制造设备的价格在每个技术时代都会翻倍。在今天,一条半导体生产线的成本已经超过30亿美元,因此只有少数几个如英特尔和三星这样的公司能够大量生产芯片,拥有和运维他们自己的生产线。这导致了像台积电这样的半导体代工企业的兴起。代工业的出现使得一些半导体芯片公司将核心价值转移到芯片设计创新上,nVidia就是这样一个例子。它无需承担投资和运维芯片生产线的成本,也不需要承担相关的风险。相反地,芯片代工公司可以同时为多家不具备生产线的芯片公司提供产品,从而分摊它们运维生产线的成本,降低生产风险。同样的,规模经济和复用性的优势将最终导致只有少数云计算供应商,他们可以将投资运维大型数据中心的成本分摊到那些没有数据中心的公司的产品上。在技术论坛、学术会议甚至是杂志上,云计算已经是一个广泛谈论的话题。但是,到底什么是云计算?什么时候运用云计算会有效?这些问题仍然没有得到明确的解决。Oracle的CEOLarryEllison对此保留了悲观的态度。他表示:“我们只是通过云计算,把我们已经实现的东西进行了重新的定义……我不明白,关于云计算,我们除了在广告中的改变一些字词,还要做什么。”这种观点得到了惠普欧洲地区软件销售副总裁的委婉的认同。他说:“很多人赶潮流式的谈论云计算,但我从来没有听到两个人谈论的是同一件事情。关于云,现在有太多的理解了。”自由软件的倡导者RichardStallman则认为云计算是对于用户的一个陷阱——如果用户把他们的应用和数据交给云计算供应商管理,那么他们将依赖于专用系统。这样他们的成本将上升或者他们会遭遇服务条款单方面改变的不利情况。他说:“这是愚蠢的,甚至比愚蠢更糟糕,这是一个市场营销活动。有人在说云计算,这是不可避免的——但你听到的大多数关于云计算的话,都只是市场营销而已。”我们这篇论文的目的,就是要明确一些术语,提供简单的公式来量化比较云计算和传统计算,并明确阐述云计算的发展的最大技术和非技术挑战,及相应存在的机遇。我们的观点是在两部分工作中形成的。一部分是加州伯克利大学RAD实验室自2005年起的研究工作;另一部分是作为AmazonWebService的用户,自2008年1月起将此服务用于我们研究和教学过程的实践。RAD实验室的研究计划是发明一项技术,可以通过机器学习,实现数据中心的自动化操作,提供可扩展的互联网服务。我们对云计算进行了为期6个月的头脑风暴,尝试回答以下问题:1.什么是云计算,它与以前的模型如SaaS有什么不同?2.为什么现在正是云计算要发展的时候,而以前的尝试都是失败的?3.成为云计算供应商需要什么条件?为什么公司需要考虑成为一个云计算的供应商?4.云计算将创造什么新的机遇?5.如何对现有的云计算产品进行分类,他们在技术和商业上各有什么不同的挑战?6.云计算可能创造什么新的经济模型?服务运营者改如何决定将服务转移到云中还是保留在私有数据中心里?7.云计算成功的10大挑战是什么?相应有什么解决方案?8.将来的应用软件、基础软件和硬件都需要为适应云计算作哪些设计上的改变?3什么是云计算?云计算包含互联网上的应用服务及在数据中心提供这些服务的软硬件设施。互联网上的应用服务一直被称作软件即服务(SoftwareasaService,SaaS),所以我们使用这个术语。而数据中心的软硬件设施就是我们称作的云(Cloud)。当