内容简介:

  云计算是新一代 IT 计算模式,它运用先进的分布式计算及存储架构为用户提供方便的体验并降低使用成本。本书首先主要介绍了云计算理论方面的知识,接着剖析了多个顶尖云计算产品(比如 Google App Engine 和 Salesforce Force.com )的实现,介绍了非常重要的系统虚拟化技术和安全方面的机制,然后选择云的核心模块之一分布式数据库作为实践的方向,并以 YunTable 这个云时代的 BigTable 为例,来给大家演示如何手动编写和设计一个分布式数据库,最后对云计算的未来发展做了展望。

作者简介:

吴朱华    曾在 IBM 中国研究院参与过多个云计算产品的开发工作,现在成立了人云信息科技有限公司( http://peopleyun.com ),官方微博为 http://t.sina.com.cn/peopleyun ,专注于 YunTable 和 YunEngine 研发。

目录

前言          5

理论篇      7

第 1 章 云计算的概念    8

第 2 章   云计算的架构           21

第 3 章   Google App Engine  38

第 4 章   Salesforce Force.com       75

第 5 章   系统虚拟化      87

第 6 章   Amazon EC2     139

第 7 章   Cisco UCS          154

第 8 章   云计算的安全           167

第 9 章   深入分析 BigTable  180

第 10 章   YunTable 的概览     198

第 11 章   YunTable 的代码剖析     209

第 12 章   云计算未来    275

结尾          286

附录          287


样章部分

 

前言

  

  “想要 One Piece 吗?那就去找吧,我的一切都在那里,在那伟大航道的尽头!”。

   - ——海贼王,哥尔• D •罗杰

  如果你不知道什么是“ One Piece ”,你千万不要伤心,因为这只能说明你很成熟。“ One Piece ”是来自于一部非常经典的漫画《海贼王》,其在故事中为“神秘的宝藏”之意,也就是海贼王哥尔• D •罗杰留下来的财富,而且整本书都是在描述男主角“草帽”蒙其• D •路飞为了得到“ One Piece ”并当上“海贼王”,而与其伙伴共同踏上“伟大航道( Grand Line )”一起去冒险的经历。读到这里,读者肯定在心中充满了疑问:到底云计算和“ One Piece ”有什么关系?且让我慢慢道来。

  我其实直到去年年中才开始接触已经被视为新“四大名著”之一的《海贼王》。在刚开始的时候,我主要为了欣赏传说中“女帝”的风采,但是随着剧情的不断深入,我慢慢地喜欢上《海贼王》,也开始像很多朋友那样每天都期盼周日能早点到来,因为每周日会有最新一集的动画版《海贼王》。在《海贼王》中我们能看到很多令人感动的东西,比如,小冯与路飞的真挚友情、艾斯那永不后退的性格和草帽海贼团生死与共的团队精神等等,其中最让我感到的莫过于,有无数的海贼为了得到传说中的“ One Piece ”而在严酷和危险的伟大航道上面不知疲倦地冒险和拼杀,当看到此情此景时,我不禁联想到我现在专注的云计算领域,为什么有许许多多的 IT 工作者,不论是国外还是国内的,都像我一样对云计算充满着热切地希望,并为之而不懈地奋斗,同时也思考着什么是云计算的“ One Piece ”?什么东西让我们如此着迷于云计算,如此坚信云计算必将改变这个世界,并推动整个世界的发展?

  经过一番思索,我不禁想起一本书,因为就是这本书使我对云计算的看法从过去的不屑转变为现在的坚信,这本书就是尼古拉斯•卡尔所著的《大转变:重新认识世界——从爱迪生到 Google 》(以下简称“大转变”)。这本书描述了整个 IT 产业正在经历一个类似电力从发电机发电到电厂供电的巨大转变,而且这本书不仅改变我的人生,更是开创了 IT 领域的“大海贼时代(云计算时代)”,我个人认为其在历史上地位完全可以同托马斯•弗里德曼的名著《世界是平的》相媲美,堪称“云计算的圣经”。这本书最关键和核心的部分,就是开头关于电力发展史的介绍:由于电力的出现,使大型工业水车这些低效率的动力设备成为了历史的遗骸,并使发电机成为各个工厂必备的核心组件,同时世界历史上最伟大的发明家爱迪生,在这段时间也由于其是发电机制造商通用电力的创始者而大把地赚钱。就在这个发电机为王的时代,爱迪生的徒弟兼私人秘书塞缪尔•英萨尔却发现了集中供电在成本和使用这两方面巨大的优越性,这使其产生了成立电厂的想法,当然这些想法在爱迪生看来肯定是很愚蠢的,因为在他眼中发电机已经足够强大了。但是随着能长距离传输的交流电技术的不断成熟,使得英萨尔的电厂想法在技术上有了非常坚实的基础,虽然在安全性方面交流电和传统的直流电技术相比略有欠缺。之后英萨尔就带领自己的团队开始在美国的芝加哥实践他关于电厂的想法。虽然在实践过程中,不仅在技术上遇到了很多挑战,而且在商业上也面临着用户的不解,同时更受到早已被人们奉若神明的爱迪生的嘲讽,但是最后由于电厂的规模效益不断地增大,使得电力的价格也随之降低,而且用户使用起来更方便,且无需维护和购买什么任何发电设备,最终导致电厂几乎成为了唯一的供电方式,而发电机则成为只有少数企业所使用的“奢侈品”。

  仔细想来,电力技术的发展和 IT 技术的发展是何等的相似,大型工业水车不由使人们联想起当年 IBM 的穿孔卡片设备;现在的企业数据中心则是过去每个工厂必备的发电机的翻版;能让电力长距离传输的交流电技术就好比现在让信息四通八达的互联网;而将来的云计算中心则和现在的电厂是一个模子刻出来的。虽然历史不会一成不变地重复,但是通过这些对比,应该能让我们对云计算的未来充满信心,并一起去追求云计算的“ One Piece ”,那就是信息和应用就像公用事业那样随手可及,而且成本低廉。比如,能随时随地通过小型和廉价的终端来接入网络,并能通过这些网络来使用各种功能强大的应用和访问海量的信息,而且按需使用,无需承担昂贵的前期投入。还有,企业也可以通过将其整个 IT 基础设施外包,来降低其运营成本,并更专注其主营业务。

  本书将引导大家进入云计算这个绚烂的新世界。全书分为四大部分:第一部分为理论篇,主要介绍云计算理论方面的知识;第二部分为产品与技术篇,将深入剖析多个顶尖云计算产品的实现,来帮助大家理解云计算是如何实现和设计的,并介绍云计算中非常重要的系统虚拟化技术和安全方面的机制;第三部分为实践篇,将选择云的核心模块之一分布式数据库作为实践的方向,并会以 YunTable 这个云时代的 BigTable 为例,来给大家演示如何手动编写和设计一个分布式数据库;最后一部分为展望篇,让我们来猜想和预测一下云计算和整个科技事业未来的发展。


   1 章 云计算的概念

        古人云:“不以规矩,无以成方圆”,也就是说,“方圆”再怎么精彩和美丽,都离不开“规矩”的积淀和约束,这个道理对云计算也同样适用,如果读者对云计算本身有一定的认知和理解,那么就非常有助于今后对其相关的技术和产品的学习,而本章就是这样专注于云计算本身的章节。在本章的开始,将关注云计算的定义和特点,接着将从思想和技术这方面来分析云计算的由来,并讲述一下云计算的诞生与成长,最后将重点介绍云计算对整个 IT 产业的影响和主要的使用场景。


   1.1 什么是云计算

        云计算到底是什么呢?

  在这个问题上,可谓众说纷纭。比如,在维基百科上的定义是“云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算”;著名咨询机构 Gartner 将云计算定义为“云计算是利用互联网技术来将庞大且可伸缩的 IT 能力集合起来作为服务提供给多个客户的技术”;而 IBM 则认为“云计算是一种新兴的 IT 服务交付方式,应用、数据和计算资源能够通过网络作为标准服务在灵活的价格下快速地提供最终用户”。

  虽然这几个定义都有一定的道理,但在我看来还没抓住云计算的核心,在我眼中, 云计算应该有如图 1-1 :云计算是新一代 IT 模式,它能在后端庞大的云计算中心的支撑下能为用户提供更方便的体验和更低廉的成本。

 

  

 

  具体而言,由于在后端有规模庞大、非常自动化和高可靠性的云计算中心的存在,人们只要接入互联网,就能非常方便地访问各种基于云的应用和信息,并免去了 安装和维护等繁琐操作,同时,企业和个人也能以低廉的价格来使用这些由云计算中心提供的服务或者在云中直接搭建其所需的信息服务。在收费模式上,云计算和 水电等公用事业非常类似,用户只需为其所使用的部分付费。对云计算的使用者(主要是个人用户和企业)来讲,云计算将会在用户体验和成本这两方面给他们带来 很多非常实在的好处。
 
  1.1.1 用户体验
  对个人用户而言,在云计算的时代,会出现越来越多的基于互联网的服务,这些服务丰富多样、功能强大、随时随地接入,同时也无需购买、下载和安装任何的客 户端,并只要使用浏览器就能轻松访问,而无需为软件的升级和病毒的感染操心。还有,人们可以将文档等数据放在云来进行共享和协作,比如,共同编辑同一篇文 章,而且通过严格的权限管理机制,来确保协作是在安全的环境下进行。对企业用户而言,可以利用云技术来优化其现有的 IT 服务,使现有的 IT 服务更可靠和更自动化,更可以将企业的 IT 服务整体迁移到云上,使企业卸下维护 IT 服务的重担,从而更专注于其主营业务。
  1.1.2 成本
 
  对个人用户而言,由于他们所使用的服务运行在云端,本地计算需求比较少,所以无需像过去那样不断地升级电脑的配置或者购买昂贵的新电脑,只需一个廉价的 可以上网的智能终端,比如:手机和上网本等。同时由于互联网服务是按需使用,而无需在初期购置不廉价的软件客户端。对企业用户而言,除了可以通过利用先进 的云技术来降低企业 IT 初期的投资成本和后期的维护成本之外,更可以通过将 IT 服务外包或者整体迁移到外部的云中来削减 IT 部门的规模,这样能使得公司成本的结构更完善。

  上面提到的一些云计算的优点和好处,而这些东西都没有远离云计算自身的特点,而是息息相关的。
 
  云计算的特点
 
  在特点方面,主要有十点,除了常见的超大规模、高可扩展性和按需服务之外,还有自动化和节能环保等。
 
  (1)    超大规模:大多数云计算中心都具有相当的规模,比如, Google 云计算中心已经拥有几百万台服务器, 而 Amazon 、 IBM 、微软、 Yahoo 等企业所掌控的云计算规模也毫不逊色,并且云计算中心能通过整合和管理这些数目庞大的计算机集群来赋予用户前所未有的计算和存储能力。  
  (2)    抽象化:云计算支持用户在任意位置、使用各种终端获取应用服务,所请求的资源都来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置,这样能有效地简化了应用的使用。
  (3)    高可靠性:在这方面,云计算中心在软硬件层面采用了诸如数据多副本容错、心跳检测和计算节点同构可互换等措施来保障服务的高可靠性,还在设施层面上的能源、制冷和网络连接等方面采用了冗余设计来进一步确保服务的可靠性。
  (4)    通用性:云计算中心很少为特定的应用存在,但其有效支持业界大多数的主流应用,并且一个“云”可以支撑多个不同类型应用的同时运行,并保证这些服务的运行质量。

  (5)    高可扩展性:用户所使用“云”的资源可以根据其应用的需要进行调整和动态伸缩,并且再加上前面所提到的云计算中心本身的超大规模,使得“云”能有效地满足应用和用户大规模增长的需要。
  (6)    按需服务:“云”是一个庞大的资源池,用户可以按需购买,就象自来水、电和煤气等公用事业那样根据用户的使用量计费,并无需任何软硬件和设施等方面的前期投入。
  (7)    廉价:首先,由于云计算中心本身巨大规模所带来的经济性和资源利用率的提升,其次,“云”大都采用廉价和通用的 X86 节点来构建,因此用户可以充分享受云计算所带来的低成本优势,经常只要花费几百美元就能完成以前需要数万美元才能完成的任务。
  (8)    自动化:云中不论是应用、服务和资源的部署,还是软硬件的管理,都主要通过自动化的方式来执行和管理,从而极大地降低整个云计算中心庞大的人力成本。
  (9)    节能环保:云计算技术能将许许多多分散在低利用率服务器上的工作负载整合到云中,来提升资源的使用效率,而且云由专业管理团队运维,所以其 PUE ( Power Usage Effectiveness ,电源使用效率值)值和普通企业的数据中心相比出色很多,比如, Google 数据中心的 PUE 值在 1.2 左右,也就是说,每一块钱的电力花在计算资源上,只需再花两角钱电力在制冷等设备,而常见的 PUE 在 2 和 3 之间,并且还能将云建设在水电厂等洁净资源旁边,这样既能进一步节省能源方面开支,又能保护了环境。
  (10)  完善的运维机制:在“云”的另一端,有全世界最专业的团队来帮用户管理信息,有全世界最先进的数据中心来帮用户保存数据。同时,严格的权限管理策略可以保证这些数据的安全。这样,用户无需花费重金就可以享受到最专业的服务。    
      由于这些特点的存在,使得云计算能为用户提供更方便的体验和更低廉的成本,同时这些特点也是为什么云计算能脱颖而出,并且能被大多数业界人员所推崇的原因之一,那么云计算是怎么诞生的呢?
 
  1.2 云计算的由来
 
  虽然很多伟大发明和技术在我们看来都是些突发奇想的产物,但当真正探究起来,这些东西大都通过一代人,甚至于几代人的积累演变而成的,其中最明显的例子,莫过于计算机本身。早在 2000 年前,我们中国人就已经发明了算盘这一强大的计算工具;在 1642 年,法国数学家帕斯卡在在英国数学家奥特雷得所制作的“计算尺”的基础上,将其加以改进,制成了能进行八位计算的“加法器”;在 1673 年,德国大师莱布尼茨在巴黎制造了一个能进行加、减、乘、除及开方运算的计算机,名为“乘法器”;在 1820 年,英国人查尔斯•巴比奇已经在构想和设计了世界上第一台完全可编程的计算机,可惜介于当时的技术条件和经费限制,使得这台计算机始终未能在他有生之年问世;到了 20 世纪,艾伦•图灵的图灵机思想和新兴的电子技术都对最后 ENIAC 的问世都起着非常关键的作用。还有,我们耳熟能详,但晦涩难懂的相对论也同样如此,如果没有麦克斯韦尔、迈克尔逊和洛仑兹等大师的积淀,估计爱因斯坦是很难完成相对论的谱写。
    当我们谈到云计算时,难道它就是突发奇想,就是特例吗?其实虽然云计算这个名词只是 Google CEO 埃里克•施密特博士当年在担任 SUN 系统公司的 CTO ( Chief Technology Officer ,首席技术官)时候的一次偶然所得,但是其概念本身不仅和前言中提到的过去电力的发展是密不可分的,而且更是整个 IT 产业非常自然的发展和演化。这些发展和演化不仅存在于思想方面,而且涉及技术方面的进步。
 
  1.2.1 思想演化
  云计算在思想方面主要经历了四个步骤才发展到现在这样比较成熟的水平,这四个步骤依次是电厂模式、效用计算、网格计算和现在的云计算,如图 1-2 所示。

 

  

   1. 电厂模式

  由于 IT 行业本身是一个比较新生的行业,所以从其他行业取经是其发展不可或缺的一步,最出名的例子之一莫过于从建筑行业,引入“模式( Pattern )”这个概念。虽然在 IT 界,电厂这个概念不像“模式”那样炙手可热,但其影响是深远的,而且有许许多多的 IT 人在不断地实践着这个理念,它的意思是通过利用电厂的规模效应,来降低电力的价格,并让用户使用起来更方便,且无需维护和购买什么任何发电设备。

  2. 效用计算

  在 1960 年左右, 当时计算设备的价格是非常高昂的,远非普通企业、学校和机构所能承受的,所以有很多人产生了共享计算资源的想法,特别是在 1961 年,人工智能之父麦肯锡在一次会议提出了“效用计算( Utility computing )”这个概念,其核心就是借鉴了上面所提到的电厂模式,具体目标是通过结合分散各地的服务器、存储系统以及应用程序来共享给多个用户,使得用户能够象把灯泡插入灯头一样来使用计算机资源,并且根据其所使用的量来付费。接着,在 1966 年 D.F.Parkhill 在其经典的《计算机公用事业的挑战》一书中也提出了类似的观点,但由于当时整个 IT 产业还处于初创期,很多强大的技术还未诞生,比如互联网等,导致虽然这个想法一直被大家所传承,但是总体而言“叫好不叫座”。

  3. 网格计算

  谈到网格计算( Grid Computing ),主要由于翻译的问题,使得国内的技术人员无法领会其精髓和真谛。网格计算中的网格,也就是“ Grid ”,其英文原意并不是我们所认为网络的网格,而是电力的网格,所以其核心与上面的效用计算非常接近,但是它的侧重点略有不同,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多许多相对低性能的计算机来进行处理,最后把这些计算结果综合起来攻克一个非常大的难题。可惜的是,由于网格计算在商业模式、技术和安全性这三方面的不足,使得其并没有在工程界和商业界取得预期的成功,但在学术界,还是有一定的应用,比如用于寻找外星人的“ SETI ”计划等。

  4. 云计算 

  云计算的核心和前面的效用计算与网格计算非常类似,也是希望能使 IT 技术能像使用电力那样方便,并且成本低廉,但与前两者不同的是,现在在需求方面,已经有一定的规模,同时在技术方面,也已经基本成熟了,所以云计算和前两者相比更有前途。

  1.2.2 技术支持

 

 

  光有理念不行,如果没有强大的技术做支撑的话,云计算也会像先前的效用计算和网格计算那样只能局限于学术界,如图 1-3 所示的那样,云计算主要有五大类技术的支持,而就是由于这些技术所提供的强大动力,使得云计算不再是空中楼阁。

  1. 摩尔定律

  随着摩尔定律依旧推动着整个硬件产业的发展,包括芯片、内存和硬盘等硬件设备在性能和容量方面得到了极大的提升,在这方面,最明显的例子,莫过于芯片,虽然在单线程性能方面,其并没有像奔腾时代那样突飞猛进,但是已经非常强悍了,再加上多核的配置,使得整体性能达到一个前所未有的境界,比如,最新的 X86 芯片在性能上已经是 30 年前 8086 的一千倍,而现在用于手机等低能耗移动设备的 ARM 芯片在性能上比过去的大型主机上的芯片强大的多,同时这些硬件设备在价格方面也比过去更平易近人。还有,诸如 SSD 和 GPU 等新兴技术的引入都极大地推动着 IT 产业的发展。可以说,摩尔定律给予云计算所需的充足“动力”。

  2. 网络设施 

  由于 ADSL 宽带和现在的光纤入户的不断普及,使得现在的网络带宽已经从过去平均 50Kb 增长至现在平均 1Mb 以上,从而基本满足了大多数服务的需求,包括视频等多媒体服务。再加上无线网络和移动通信的不断发展,从而使得人们能在任何时间任何地点都利用互联网的梦想成为了可能,可以说,现在互联网不再像过去那样是一种奢侈品,而是社会的基础设施,并使得终端和云紧紧地连起来。

  3.Web 技术

  Web 技术已经从 90 年初的“混沌期”和本世纪初的“阵痛期”走出,已经进入“快速发展期”,并随着类似 AJAX 、 jQuery 、 Flash 、 Silverlight 和 HTML5 等 Web 技术的不断地发展, Chrome 、 Firefox 和 Safari 等性能出色和功能强大的浏览器的不断涌现,使得 Web 已经不再是只能显示简单的页面或者在用户体验方面远逊于传统的桌面应用,而是能支持多种多媒体功能和复杂的事件处理,在用户体验方面已经越来越接近桌面应用,使得用户只要通过互联网和云连上,就能通过浏览器使用各种功能强大的 Web 应用。

  4. 系统虚拟化 

  虽然就像上面摩尔定律那段提到那样, X86 芯片性能已经非常强悍了,但每台 X86 服务器的利用率还是在个位数徘徊,可以说,在能源和购置成本等方面浪费极大,但随着 VMware 的 vSphere 和开源的 Xen 等基于 X86 架构的系统虚拟化技术的不断发展,使得一台服务器能整合过去多台服务器的负载,从而有效地提升硬件的利用率,并降低能源的浪费和硬件的购置成本,更重要的是,通过这些技术能有效地提升了数据中心自动化管理的程度,从而极大地减少在管理方面的投入,使云计算中心的管理更智能。

  5. 移动设备 

  随着苹果的 iOS 和 Google 的 Android 这类智能手机系统不断地发展和普及,使得诸如手机这样的移动设备已经不仅是一个移动的电话而已,更是一个完善的信息终端,能够通过它们轻松地访问互联网上的信息和应用,并且在整体功能上越来越接近台式机的水平,使得通过这些移动设备能够随时随地地访问云中的服务。 

  就像上文所提到的那样,云计算并不是突发奇想的产物,而是通过在思想和技术这两方面不断地成熟和发展,使得云计算有了一块“肥沃”的土壤,让其能自由地生长。

  1.3 云计算的诞生

  虽然在云计算诞生在一块“肥沃”的土壤之上,但是如果没有非常好的契机的话,云计算只会像小的溪流那样慢慢地流淌,而也不会像今天那样宛如无数个小溪流合并而来的长江之水那样滚滚而来,并推动着整个 IT 产业的发展。我认为有五个非常重要的契机一步步地触发了云计算的诞生。

  1.3.1 SaaS 的诞生

  在 1999 年,桌面应用还是唯一主流的时候,当时 Oracle 的高管 Marc Benioff 看准了 Web 应用将取代桌面应用这一大趋势,创建了 Salesforce 这家以销售在线 CRM ( Customer relationship management ,客户关系管理)为主的互联网公司,并定义了 SaaS ( Software as a Service ,软件即服务)这个概念,意思是软件将会以在线服务形式提供给用户,而且避免了安装和运维等繁琐的步骤。 Salesforce 的在线 CRM 一经推出,不仅受到来自技术界的好评和用户支持,而且越来越多的软件选择了 SaaS 这种模式来进行发布。总的来说,由于 SaaS 的诞生和不断地发展,使人们开始相信类似云计算的产品,不论在技术上,还是在商业上都是可行的

  1.3.2 《 IT 不再重要》的发表

  2003 年,尼古拉斯•卡尔在发表在《哈佛商业评论》上的一篇非常具有轰动性文章,名为《 IT 不再重要》,在这篇文章中,尼古拉斯•卡尔犀利地提出 IT 技术已经日用品化了。虽然这样能使大多数的企业从 IT 中获益,但是 IT 已经很难给企业带来一定的竞争优势。虽然在刚发表时,此文受到了包括当时 Intel 董事长克瑞格•贝瑞特在内整个 IT 界的口诛笔伐,并导致尼古拉斯•卡尔甚至自称其为 IT 界的“全民公敌”。但是,从今天,也就是文章发表的七年后看来,此文不仅促使了广大的 IT 从业者不断地反思,从而推动了 IT 产业的改革,因为 IT 技术的日用品化并不是 IT 业的末日,而是下一次创新和发展的基石,而且还引出了《大转变》这本“云计算的圣经”。

  1.3.3 Google 的三大核心技术

  在 2003 年的 SOSP 大会上 Google 发表了 GFS ( Google File System , Google 文件系统)这个分布式存储系统的论文;在 2004 年的 OSDI 大会上发表了 MapReduce 这个分布式处理技术的论文,;在 2006 年的 OSDI 大会上发表了 BigTable 这个分布式数据库的论文。这三篇重量级论文的发表,不仅使大家了解 Google 搜索引擎背后强大的技术支撑,而且克隆这三个技术的开源产品像雨后春笋那样不断地涌现, MapReduce 的有 Hadoop , GFS 的有 HDFS ,而 BigTable 则有 Hbase 、 Hypertable 和 Cassandra 等,这三篇论文和相关的开源技术极大地普及了云计算中非常核心的分布式技术。

  1.3.4 Amazon Web Service 的推出

  Amazon 的 B2C 业务有点类似中国移动的短信业务,平时流量很大,但是到每年特定的时刻(比如 Amazo 的圣诞节和中国移动的春节等),流量更是数量级的攀升,在这种情况下, Amazon 需要购置远超其平常使用量的硬件资源以应对圣诞节的流量,很显然,会有很多资源被浪费,所以 Amazon 想出租借硬件资源给公众,以减少浪费的想法,这也是其推出 Amazon Web Service 的最主要的原因。在 2006 年初, Amazon 推出了 Amazon Web Service 第一款产品 S3 ( Simple Storage Service ,简单存储服务)云存储服务,在 2006 年 8 月推出了另一款 Amazon Web Service 产品 EC2 ( Elastic Compute Cloud ,弹性计算云)云基础设施服务,之后还推出了包括 SimpleDB 、 Simple Queue Service 和 CloudFront 等近 20 种云服务。 Amazon Web Service 的推出标志着云计算相关的产品已经出现,并基本可用,虽然那时还没有云计算这个说法。

  1.3.5 IBM 和 Google 的合作

  一位名叫克里斯托夫•比希利亚的 Google 高级工程师,为了推广 Google 一些新的技术,所以他利于其 20% 的时间在他的母校华盛顿大学开了一门名叫“ Google 101 ”的课程,通过这门课程指导学生学习一些常用于 Google 内部的分布式技术,比如 MapReduce 等。接着,这个项目也得到 IBM 方面的支援,在合作的过程中, IBM 和 Google 都从中意识到这些分布式技术在商业和科研方面的强大潜力,并最终在 2007 年 10 月 8 日共同宣布了一项“大规模分布式计算”推进计划,两家公司将投资建立一个大型的数据中心,学生可以通过互联网远程访问该数据中心,并进行远程的研究,这个项目也称为“云计算”的推进计划,这就是云计算的诞生。

    1.4 云计算的成长

  在云计算这个概念诞生之后,虽然受到一定程度的非议,但是总体而言,云计算还是得到了大家的欢迎,而且大家对云计算的认识也在不断地加深中,并且业界有很多知名公司都出台了一系列产品或者规划。表 1-1 是云计算概念诞生以来的编年史。  

     通过上面提到的这些产品发布和各种预测,我们应该可以看出业界对于云计算是非常看好和关注的。

  1.5 云计算的影响

  虽然云计算最初只是由 IBM 和 Google 这两家公司所主导的,但是就像图 1-4 所示那样云计算将会对整个 IT 产业带来非常深远的影响,其中包括服务器供应商、软件开发商和云终端供应商这三个云计算建设者和作为云计算运维者的云供应商。本章将从上面提到的这四个角度进行分析,之后,会总结云计算对整个 IT 产业的影响。

 

  

 

  1.5.1 服务器供应商的角度

  这类型的公司主要包括 IBM 、 HP 、 Dell 和 Cisco 等。主要有两个方面的变化:其一,是需求方面的变化,虽然中小企业会不断地加大对 IT 技术使用,但由于它们将会把云服务作为首选,所以对服务器供应商而言,来自中小企业的订单将会不断的减少,但来自云供应商的订单则会大量的增加;其二,是产品方面的变化,由于大型云计算中心,对硬件有自己一套的设计和想法,所以会希望服务器供应商能生产为它们定制的硬件,这导致服务器供应商他们整体产品的方向将会从原先的以生产通用的 X86 服务器为主,转变为通用和定制兼顾,而且为云计算做优化的解决方案将受到极大欢迎。虽然云计算将会对部分非常依赖中小企业的硬件厂商带来非常不利的影响,但是从长期而言,对那些不断创新,并且提出非常优秀的云计算解决方案的硬件厂商,将会脱颖而出,并从云计算大潮中获利丰厚。

  1.5.2 软件开发商的角度

  最典型的公司有微软、 Red Hat 、 Oracle 和 VMware 等。主要有三方面的变化:首先,在软件交付方式上的变化,由于虚拟器件( Virtual Appliance )等软件发布格式的引入,使得不仅软件的开发,维护和销售等方面的成本和复杂度得到了降低,而且也加快了软件部署的速度;其次,在软件销售和发布方式上的变化,由于各种基于云的软件发布平台(比如苹果的 App Store 、中国移动的 Mobile Market 和 VMware Virtual Appliance Marketplace 等)的出现,使得发布、推广和销售软件越来越简单,而且成本更低,比如,和传统软件发布前期需要大量资金支持不同的是,在苹果的 App Store 上发布软件的成本基本为零,而且能直面超过 5000 万 iOS 系统(包括 iPhone 、 iPod Touch 和 iPad )的使用者,同时这些用户的消费能力也是非常强大的;最后,在技术上的变化,软件将与云技术进行深度地整合,比如,应用类的软件,基本上都将选择 Web 作为其首选的界面,而中间件和底层的系统软件将会为运行在云中做更多的优化。

  1.5.3 云终端供应商的角度

  这方面的公司有 Apple 、 Nokia 、三星和联想等。由于移动设备的轻便型,再加上性能的日渐提高和能方便地接入多种无线网络(比如 WIFI 和 3G 等),所以市场对移动设备需求将与日俱增,而且将来云终端将不会仅是手机、平板和笔记本这几种移动设备,而将会涉及社会的方方面面,比如电视和汽车等,所以在这方面会有非常大创新空间等待着这些公司。

  1.5.4 云供应商的角度 

  相关的公司有国外的 Amazon 、 Google 和 RackSpace 等,国内的有中国移动和中国电信等。随着云计算不断推广和被大众所接受,使得云计算中心在运营的规模上会不断地增大, 这将会给云供应商带来很多机会来降低其运营成本,并提升经营利润,比如,将云计算中心建设在能源成本底的地方(比如电厂附近)或者建在制冷成本底(比如天气寒冷的地点)的地方。而且由于运行的工作负载的规模非常庞大,将整体提高服务器利用率。同时云的业务都属于非常稳定的,所以能给云供应商带来持久的现金流。

  1.5.5 整个 IT 产业的角度 

  不可否认,在短期内,由于产业结构的变化,云计算有可能将会给整个 IT 产业带来一定程度的阵痛,但是从长期而言,云计算将会对整个 IT 产业带来非常正面的影响,因为云计算将推动整个产业的进一步的优化布局和专业分工,并且提供一个让所有 IT 人不断地创新的舞台,最终,这些参与者会像之前大型机时代和 PC 时代那样同心协力创造出一整套属于云计算的产业链。

  1.6 云计算的使用场景

  有些 IT 从业人员在谈到云计算的时候,总是认为云计算只是广告词而已,实际的用处是非常有限。对于这种看法,我不以为然,因为不仅云计算的部分技术已经落地,而且云计算将在 IT 产业各个方面都有其用武之地,在这里,选择十个比较典型的使用场景来加以介绍。

  1.6.1 IDC 云

  传统 IDC ( Internet Data Center ,互联网数据中心)的服务已经无法满足用户的需求,用户期望更强大、更方便和更灵活的 IDC 服务。 IDC 云是在 IDC 原有数据中心的基础上,加入更多云的基因,比如系统虚拟化技术、自动化管理技术和智慧的能源监控技术等。通过 IDC 的云平台,用户能够使用到虚拟机和存储等资源。还有, IDC 可通过引入新的云技术来提供许多新的具有一定附加值的服务,比如, PaaS 等。现在已成型的 IDC 云有 Linode 和 Rackspace 等。

  1.6.2 企业云

  对任何大中型企业而言, 80% 的 IT 资源都用于维护现有应用的,而不是让 IT 更好地为业务服务。使用专业的企业云解决方案来提升企业内部数据中心的自动化管理程度,将整个 IT 服务的思维从过去的软硬件思维转变为以提供服务为主,使得 IT 人员能分出精力来为业务创新,成为半个业务人员。企业云对于那些需要提升内部数据中心的运维水平和希望能使整个 IT 服务更围绕业务展开的大中型企业非常适合。相关的产品和解决方案有 IBM 的 WebSphere CloudBurst Appliance 、 Cisco 的 UCS 和 VMware 的 vSphere 等。

   1.6.3 云存储系统

  由于数据是企业的非常重要的资产和财富,所以需要对数据进行有效的存储和管理,而且普通的个人用户也需要大量的存储空间用于保存大量的个人数据和资料,但由于本地存储在管理方面缺失,使得数据的丢失率非常高。而云存储系统能解决上面提到这些问题,它是通过整合网络中多种存储设备来对外提供云存储服务,并能管理数据的存储、备份、复制和存档,还有,良好的用户界面和强大的 API 支持也是不可或缺的。云存储系统非常适合那些需要管理和存储海量数据的企业,比如互联网企业,电信公司等,还有广大的网民。相关的产品有:中国电信的 E 云、 Amazon 的 S3 云存储服务、 Google 的 Picasa 相册和微软的 SkyDrive 网络硬盘等。

  1.6.4 虚拟桌面云

   对许多企业而言,桌面系统的安装、配置和维护都是其 IT 运营非常重要的一个方面,桌面系统的分散管理将给整个 IT 部门带来沉重的压力,而且相关的数据和信息安全不能受到有效地监控,同时企业更希望能将降低终端桌面系统的整体成本,并且使用起来更稳定和灵活。虚拟桌面云是这方面一个非常不错的解决方案,其是利用了现在成熟的桌面虚拟化技术。桌面虚拟化技术是将用户的桌面环境与其使用的终端进行解耦,在服务器端以虚拟镜像的形式统一存放和运行每个用户的桌面环境,而用户则可通过小型的终端设备来访问其桌面环境,还有,系统管理员可以统一地管理用户在服务器端的桌面环境,比如安装、升级和配置相应地软件等。这个解决方案比较适合那些需要使用大量桌面系统的企业。相关的产品有 Citrix 的 Xen Desktop 和 VMware 的 VMware view 。

  1.6.5 开发测试云

  开发测试总是繁琐、易错和耗时的过程,特别是在准备测试环境上面,还有会遇到诸如测试资源管理混乱,难于重现问题发生的环境和缺乏压力测试所需要的强大计算能力等棘手问题。而开发测试云能有效解决上面这些问题,其通过友好的 Web 界面,可以预约、部署、管理和回收整个开发测试的环境,通过预先配置好(包括操作系统,中间件和开发测试软件)的虚拟镜像来快速地构建一个个异构的开发测试环境,通过快速备份 / 恢复等虚拟化技术来重现问题,并利用云的强大的计算能力来对应用进行压力测试,比较适合那些需要开发和测试多种应用的组织和企业,比如银行、电信和政府等。相关解决方案有 IBM Smart Business Development and Test Cloud 。

  1.6.6 大规模数据处理云

  企业需要分析大量的数据来洞察业务发展的趋势,可能的商业机会和存在的问题,从而做出更好、更快和更全面的决策。还有,物联网会采集海量需要处理的数据。大规模数据处理云通过将数据处理软件和服务运行在云计算平台上,能利用云平台的计算能力和存储能力来对海量的数据进行大规模的处理,除了上面提到的物联网之外,还有许多企业和机构都会有这方面的需求。相关产品有 Apache 的 Hadoop 等。

  1.6.7 协作云

  电子邮件、 IM ( Instant Messaging ,即时通讯)、 SNS ( Social Networking Services ,社交网络服务)和通信工具(比如 Skype 和 WebEx )等都是很多企业和个人必备的协作工具,但是维护这些软件和其硬件却是一件让人非常头疼的工作。协作云是云供应商在 IDC 云的基础上或者直接构建一个专属的云,并在这个云搭建整套的协作软件,并将这些软件共享给用户,非常适合那些需要一定的协作工具,但不希望维护相关的软硬件和支付高昂的软件许可证费用的企业与个人。这方面,最具代表性的产品莫过于 IBM 的 LotusLive ,它主要包括会议、办公协作和电子邮件这三大服务。当然 Google Apps 也是不容忽视的,其中 Gmail 和 Gtalk 都是协作的利器。

  1.6.8 游戏云

  由于传统游戏软件容量都非常巨大,无论是单机,还是网游,都需要在游戏之前,花很多时间在下载和安装上,使玩家无法很尽兴地玩游戏,再加上游戏的购置成本偏高,使得玩家在尝试新游戏方面,兴趣骤降。在这方面,业界部分公司推出了游戏云的解决方案,主要有两大类:其一是使用更多基于 Web 的游戏模式,比如使用 JavaScript 、 Flash 和 Silverlight 等技术,并将这些游戏部署到云中,这种解决方案比较适合休闲游戏;其二是为大容量和高画质的专业游戏设计的,整个游戏都将在运行云中,但会将最新生成的画面传至客户端。总之,休闲玩家和专业玩家都会在游戏云找到自己的所爱。在产品方面:第一种游戏云,已经有很多游戏都采用这种方案,比如许多 Facebook 上的休闲游戏采用了后端云和前端 Flash 这样的组合;而第二种游戏云, AMD 已经发布了类似的技术,但碍于现有的网络环境,所以短时间内不会有特别成熟技术出现。

  1.6.9 HPC 云

  在科学方面 HPC ( High Performance Computing ,高性能计算)领域,现在主要有两方面挑战:其一是供需不平衡,要么是现有的 HPC 资源太过稀少,无法满足大众的需求,要么就是贫富不均,导致 HPC 资源无法被合理的分配;其二是现有的 HPC 设计和需求不符,虽然 HPC 已经发展了很多年,但是在设计还是将所有的计算资源整合在一起以追求极致速度为主,但是现在的主流需求则常以只需要一小块计算资源为主,这导致 HPC 计算资源被极大地浪费,所以新一代的高性能计算中心不仅仅需要提供传统的高性能计算,而且还需要增加资源的管理、用户的管理、虚拟化的管理、动态的资源产生和回收等等。这时,基于云计算的高性能计算应运而生,也就是 HPC 云,其能够为用户提供可以完全定制的高性能计算环境,用户可以根据自己的需求来改变计算环境的操作系统、软件版本和节点规模,从而避免与其他用户的冲突,并可以成为网格计算的支撑平台,以提升计算的灵活性和便捷性。 HPC 云特别适合需要使用高性能计算,但缺乏巨资投入的普通企业和学校。北京工业大学已经和 IBM 合作建设国内第一个 HPC 云计算中心。

  1.6.10 云杀毒

  新型病毒的不断涌现,使得杀毒软件的病毒特征库的大小与日俱增,如果在安装杀毒软件的时候,附带安装庞大的病毒特征库的话,将会影响用户的体验,而且杀毒软件本身的运行也会极大地消耗系统的资源。通过云杀毒技术,杀毒软件可以将有嫌疑的数据上传到云中,并通过云中庞大的特征库和强大的处理能力来分析这个数据是否含有病毒,这非常适合那些需要使用杀毒软件来捍卫其电脑安全的用户。现有的杀毒软件都支持一定的云杀毒这个特性,比如 360 杀毒和金山毒霸等。

  本章已经给大家介绍云计算概念相关的几个方面,比如定义、由来、成长和诞生等,估计大家现在已经对云计算有了些基本的认识,并且有可能对云计算充满了更多的好奇,而下章将选取云计算概念中非常重要的一部分 -- 架构,来进行深入地介绍和讲解。

 

 第 2 章   云计算的架构

 

   IT ,身为一个新兴行业,其在发展历程中向其他行业借鉴了一些先进的思想和理念,最明显的例子除了上面提到的从电力行业学习了公用事业这种商业模式和从丰田汽车流水线生产中总结出精益这套编程模式之外,还有,就是在软件设计方面,引入了架构这个在建筑行业非常核心的概念。

    架构,对软件系统而言是极为重要的,因为它不仅定义了系统内部各个模块之间是如何整合和协调的,同时也对其整体表现起着非常关键的作用。而云,作为一个非常复杂的大型软件系统,它内部包含着许许多多的模块和组件,所以如果能够理出其架构的话,将会非常有益处。

  为了让大家对云计算有更深入的理解,本章将会对云的架构进行深入地剖析。除了云的架构之外,本章还将会对云计算最主要和最常见的四种模式进行深入的介绍。

 

   2.1 云的架构

 

  在对云计算进行了三年多的研究之后,觉得虽然云计算涉及了很多产品与技术,表面上看起来的确有点纷繁复杂,但是云计算本身还是有迹可循和有理可依的,所以在个人理解的基础上,我总结出了一套云计算的架构,具体请看图 2-1 。

 

  

 

 

  上面这个云架构共分为服务和管理这两大部分。
  在服务方面,主要以提供用户基于云的各种服务为主,共包含三个层次:其一是 Software as a Service 软件即服务,简称 SaaS ,这层的作用是将应用主要以基于 Web 的方式提供给客户;其二是 Platform as a Service 平台即服务,简称 PaaS ,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是 Infrastructure as a Service 基础设施即服务,简称 IaaS ,这层的作用是将各种底层的计算(比如虚拟机)和存储等资源作为服务提供给用户。从用户角度而言,这三层服务,它们之间关系是独立的,因为它们提供的服务是完全不同的,而且面对的用户也不尽相同。但从技术角度而言,云服务这三层之间的关系并不是独立的,而是有一定依赖关系的,比如一个 SaaS 层的产品和服务不仅需要使用到 SaaS 层本身的技术,而且还依赖 PaaS 层所提供的开发和部署平台或者直接部署于 IaaS 层所提供的计算资源上,还有, PaaS 层的产品和服务也很有可能构建于 IaaS 层服务之上。

  在管理方面,主要以云的管理层为主,它的功能是确保整个云计算中心能够安全和稳定的运行,并且能够被有效地管理。

  接下来,将给大家详细介绍每个层次,其中将不仅涉及它们的历史和相关产品,而且将会讨论它们的优势和采用的技术。

  2.2 SaaS

  它是最常见的,也就是最先出现的云计算服务,通过 SaaS 这种模式,用户只要接上网络,并通过浏览器,就能直接使用在云端上运行的应用,并由 SaaS 云供应商负责维护和管理云中的软硬件设施,同时以免费或者按需使用的方式向用户收费,所以用户不需要顾虑类似安装、升级和防病毒等琐事,并且免去初期高昂的硬件投入和软件许可证费用的支出。

  2.2.1 历史
  SaaS 的前身是 ASP ( Application Service Provider ),其概念和思想和 SaaS 相差不大。最早的 ASP 厂商有 Salesforce.com 和 Netsuite ,其后还有一批企业跟随进来,这些厂商在创业时都主要专注于在线 CRM (客户关系管理)应用,但由于那时正值互联网泡沫破裂的时候,而且当时 ASP 本身技术也并不成熟,而且还缺少定制和集成等重要功能,再加上当时欠佳的网络环境,使得 ASP 没有受到市场的热烈欢迎,从而导致大批相关厂商破产但在 2003 年后,在 Salesforce 的带领下,惨存的 ASP 企业喊出了 SaaS 这个口号,并随着技术和商业这两方面地不断成熟,使得 Salesforce 、 WebEx 和 Zoho 等国外 SaaS 企业得到了成功,而国内的,诸如用友、金算盘、金碟、阿里巴巴和八百客等企业也加入到 SaaS 的浪潮中。

  2.2.2 相关产品

  由于 SaaS 产品起步较早,而且开发成本低,所以在现在的市场上, SaaS 产品不论是在数量,还是在类别,都非常丰富,而且也出现了多款经典产品,其中最具代表性的莫过于 Google Apps 、 Salesforce CRM 、 Office Web Apps 和 Zoho :

  (1)    Google Apps :中文名为“ Google 企业应用套件”,提供包括企业版 Gmail 、 Google 日历、 Google 文档和 Google 协作平台等多个在线办公工具,而且价格低廉,使用方便,并且已经有超过两百万家企业购买了 Google Apps 服务。

  (2)    Salesforce CRM :它是一款在线客户管理工具,并在销售、市场营销、服务和合作伙伴这四个商业领域上提供完善的 IT 支持,还提供强大的定制和扩展机制,来让用户的业务更好地运行在 Salesforce 的平台上。这款产品常被业界视为 SaaS 产品的“开山之作”。

  (3)    Office Web Apps :它是微软所开发的在线版 Office ,提供基于 Office 2010 技术的简易版 Word 、 Excel 、 PowerPoint 及 OneNote 等功能,属于 Windows Live 的一部分,并与微软的 SkyDrive 云存储服务有深度地整合,而且兼容 Firefox 、 Safari 和 Chrome 等非 IE 系列浏览器。和其他在线 Office 相比,它的最大优势是,由于其本身属于 Office 2010 的一部分,所以在与 Office 文档的兼容性方面远胜其他在线 Office 服务。

  (4)    Zoho : Zoho 是 AdventNet 公司开发的一款在线办公套件,在功能方面绝对是现在业界最全面的,它包括邮件、 CRM 、项目管理、 Wiki 、在线会议、论坛和人力资源管理等几十个在线工具供用户选择。同时包括美国通用电气在内的多家大中型企业已经开始在其内部引入 Zoho 的在线服务, Zoho 在国内的代理商为百会。

  2.2.3 优势

  虽然和传统桌面软件相比,现有的 SaaS 服务在功能方面还稍逊一筹,但是在其他一些方面还是具有一定的优势,下面是其中的四个方面:

  (1)    使用简单:在任何时候或者任何地点,只要接上网络,用户就能访问这个 SaaS 服务,而且无需任何地安装、升级和维护。
  (2)    支持公开协议:现有的 SaaS 服务都在公开协议(比如 HTML4/5 )的支持方面做的很好,使得用户只需一个浏览器就能对 SaaS 应用进行使用和访问,这样对用户而言,非常方便。
  (3)    安全保障: SaaS 供应商需要提供一定的安全机制,不仅要使存储在云端的用户数据处于绝对安全的境地,而且也要通过一定的安全机制(比如 HTTPS 等)来确保与用户之间通信的安全。
  (4)    初始成本低:使用 SaaS 服务不仅无需在使用前购买昂贵的许可证,而且几乎所有的 SaaS 供应商都提供免费的试用。

  2.2.4 技术

  由于 SaaS 层离普通用户非常接近,所以在 SaaS 层所使用到的技术,大多耳熟能详,下面是其中最主要的五种:

  (1)    HTML :标准的 Web 页面技术,现在主要以 HTML4 为主,但是即将推出的 HTML5 会在很多方面推动 Web 页面的发展,比如视频和本地存储等方面。
  (2)    JavaScript :一种用于 Web 页面的动态语言,通过 JavaScript ,能够极大地丰富 Web 页面的功能,最流行的 JS 框架有 jQuery 和 Prototype 。
  (3)    CSS :主要用于控制 Web 页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。
  (4)    Flash :业界最常用的 RIA ( Rich Internet Applications )技术,能够在现阶段提供 HTML 等技术所无法提供的基于 Web 的富应用,而且在用户体验方面,非常不错。
  (5)    Silverlight :来自业界巨擎微软的 RIA 技术,虽然其现在市场占有率稍逊于 Flash ,但由于其可以使用 C# 来进行编程,所以对开发者非常友好。

  在 SaaS 层的技术选型上,首先,由于通用性和较低的学习成本,大多数云计算产品都会比较倾向 HTML 、 JavaScript 和 CSS 这对黄金组合,但是在 HTML5 被大家广泛接受之前, RIA 技术在用户体验方面,还是具有一定的优势,所以 Flash 和 Silverlight 也将会有一定的用武之地,比如 VMware vCloud 就采用了基于 Flash 的 Flex 技术,而微软的云计算产品肯定会在今后大量使用 Silverlight 技术。

  2.3 PaaS

  通过 PaaS 这种模式,用户可以在一个提供 SDK ( Software Development Kit, 即软件开发工具包)、文档、测试环境和部署环境等在内的开发平台上非常方便地编写和部署应用,而且不论是在部署,还是在运行的时候,用户都无需为服务器、操作系统、网络和存储等资源的运维而操心,这些繁琐的工作都由 PaaS 云供应商负责。而且 PaaS 在整合率上面非常惊人,比如一台运行 Google App Engine 的服务器能够支撑成千上万的应用,也就是说, PaaS 是非常经济的。 PaaS 主要面对的用户是开发人员。

  2.3.1 历史
  PaaS 是云服务这三层之中出现最晚的,业界第一个 PaaS 平台诞生在 2007 年,是 Salesforce 的 Force.com ,通过这个平台不仅能使用 Salesforce 提供的完善的开发工具和框架来轻松地开发应用,而且能把应用直接部署到 Salesforce 的基础设施上,从而能利用其强大的多租户系统。接着,在 2008 年四月, Google 推出了 Google App Engine ,从而将 PaaS 所支持的范围从在线商业应用扩展到普通的 Web 应用,也使得越来越多的人开始熟悉和使用功能强大的 PaaS 服务。

  2.3.2 相关产品

  和 SaaS 产品百花齐放相比, PaaS 产品主要以少而精为主,其中比较著名的产品有: Force.com 、 Google App Engine 、 Windows Azure Platform 和 Heroku 。

  (1)    Force.com :就像上面所说的 Force.com 是业界第一个 PaaS 平台,其主要通过提供完善的开发环境和强健的基础设施等来帮助企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。还有, Force.com 本身是基于 Salesforce 著名的多租户的架构。

  (2)    Google App Engine : Google App Engine 提供 Google 的基础设施来让大家部署应用,它还提供一整套开发工具和 SDK 来加速应用的开发,并提供大量的免费额度来节省用户的开支。

  (3)    Windows Azure Platform :它是微软推出的 PaaS 产品,并运行在微软数据中心的服务器和网络基础设施上的,通过公共互联网来对外提供服务,它由具有高扩展性云操作系统、数据存储网络和相关服务组成,而且服务都是通过物理或虚拟的 Windows Server 2008 实例提供。还有,其附带的 Windows Azure SDK (软件开发包)提供了一整套开发、部署和管理 Windows Azure 云服务所需要的工具和 API 。

  (4)    Heroku :是一个用于部署 Ruby On Rails 应用的 PaaS 平台,并且其底层基于 Amazon EC2 的 IaaS 服务,而且在 Ruby 程序员中有非常好的口碑。

  2.3.3 优势

  和现有的基于本地的开发和部署环境相比, PaaS 平台主要有下面这六方面有非常大的优势:

  (1)    友好的开发环境:通过提供 SDK 和 IDE ( Integrated Development Environment ,集成开发环境)等工具来让用户不仅能在本地方便地进行应用的开发和测试,而且能进行远程部署。
  (2)    丰富的服务: PaaS 平台会以 API 的形式将各种各样的服务提供给上层的应用。
  (3)    精细的管理和监控: PaaS 能够提供应用层的管理和监控,比如,能够观察应用运行的情况和具体数值(比如吞吐量( Throughput )和响应时间( Response Time )等)来更好地衡量应用的运行状态,还有能够通过精确计量应用使用所消耗的资源来更好地计费。
  (4)    伸缩性强: PaaS 平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。
  (5)    多住户( Multi-Tenant )机制:许多 PaaS 平台都自带多住户机制,不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。
  (6)    整合率和经济性: PaaS 平台整合率是非常高,比如 PaaS 的代表 Google App Engine 能在一台服务器上承载成千上万的应用。

  2.3.4 技术

  在 SaaS 层所采用的技术不同的是, PaaS 层的技术比较多样性,下面是常见的五种:
  (1)    REST :通过 REST ( Representational State Transfer ,表述性状态转移)技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。
  (2)    多租户:就是能让一个单独的应用实例可以为多个组织服务,而且能保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。
  (3)    并行处理:为了处理海量的数据,需要利用庞大的 X86 集群进行规模巨大的并行处理, Google 的 MapReduce 是这方面的代表之作。
  (4)    应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于 Google App Engine 的 Jetty 应用服务器。
  (5)    分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于 Memcached 。

  对于很多 PaaS 平台,比如用于部署 Ruby 应用的 Heroku 云平台,应用服务器和分布式缓存都是必备的,同时 REST 技术也常用于对外的接口,多租户技术则主要用于 SaaS 应用的后台,比如用于支撑 Salesforce 的 CRM 等应用的 Force.com 多租户内核,而并行处理技术常被作为单独的服务推出,比如 Amazon 的 Elastic MapReduce 。

  2.4 IaaS

  通过 IaaS 这种模式,用户可以从供应商那里获得他所需要的计算或者存储等资源来装载相关的应用,并只需为其所租用的那部分资源进行付费,而同时这些基础设施繁琐的管理工作则交给 IaaS 供应商来负责。

  2.4.1 历史

  和 SaaS 一样,类似 IaaS 想法其实已经出现了很久了,比如,过去的 IDC ( Internet Data Center ,互联网数据中心)和 VPS ( Virtual Private Server ,虚拟专用服务器)等,但由于技术、性能、价格和使用等方面的缺失,使得这些服务并没有得到大中型企业广泛地采用。但在 2006 年底 Amazon 发布了 EC2 ( Elastic Compute Cloud ,灵活计算云)这个 IaaS 云服务,由于 EC2 在技术和性能等多方面的优势,使得这类型的技术终于得到业界广泛地认可和接受,其中就包括部分大型企业,比如著名的纽约时报。

  2.4.2 相关产品

  最具代表性的 IaaS 产品和服务有: Amazon EC2 、 IBM Blue Cloud 、 Cisco UCS 和 Joyent 。

  (1)    Amazon EC2 : EC2 主要以提供不同规格的计算资源(也就是虚拟机)为主,并基于著名的开源虚拟化技术 Xen ,通过 Amazon 的各种优化和创新,使得 EC2 不论在性能上,还是在稳定性上,都已经满足企业级的需求,而且 Amazon EC2 还提供完善的 API 和 Web 管理界面,来方便用户的使用。
  (2)    IBM Blue Cloud :“蓝云”解决方案是由 IBM 云计算中心开发的业界第一个,同时也是在技术上比较领先的企业级云计算解决方案。该解决方案可以对企业现有的基础架构进行整合,通过虚拟化技术和自动化管理技术,来构建企业自己的云计算中心,并实现对企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,也打破了应用对资源的独占,从而帮助企业能享受到云计算所带来的诸多优越性。
  (3)    Cisco UCS :它是下一代数据中心平台,在一个紧密结合的系统中整合了计算、网络、存储与虚拟化功能。该系统包含一个低延时无丢包万兆以太网统一网络阵列,以及多台企业级 x86 架构刀片服务器等设备,并在一个统一的管理域中管理所有资源。用户可以通过在 UCS 上安装 VMWare vSphere 来支撑多达几千台虚拟机的运行。通过 Cisco UCS ,能够让企业快速在本地数据中心搭建基于虚拟化技术的云环境。
  (4)    Joyent :它提供基于 Open Solaris 技术的 IaaS 服务,其 IaaS 服务中最核心的,莫属 Joyent Accelecator ,它能够为 Web 应用开发人员提供基于标准的、非专有的、按需供应的虚拟化计算和存储解决方案。基于 Joyent Accelerator ,用户可以使用具备多核 CPU 、海量内存和存储的服务器设备来搭建了自己的网络服务,并提供超快的访问、处理速度和超高的可靠性。

  2.4.3 优势     IaaS 服务和传统的企业数据中心相比,在很多方面都存在一定的优势,下面是最明显的五个。
  (1)    免维护:主要的维护工作都有 IaaS 云供应商负责,所以不必用户操心。
  (2)    非常经济:首先免去了用户前期的硬件购置成本,而且由于 IaaS 云大都采用虚拟化技术,所以在应用和服务器的整合率普遍在 10 以上,这样能有效降低使用成本。
  (3)    开放标准:虽然很多 IaaS 平台都存在一定的私有功能,但是由于 OVF 等应用发布协议的诞生,使得 IaaS 在跨平台方面稳步前进,从而使得应用能在多个 IaaS 云上灵活的迁移,而不会被固定在某个企业数据中心内。
  (4)    支持的应用:因为 IaaS 主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以 IaaS 所支持应用的范围是非常广泛的。
  (5)    伸缩性强: IaaS 云只需几分钟就能提供用户一个新的计算资源,而传统的企业数据中心则往往需要几周时间,并且计算资源可以根据用户需求来调整其资源的大小。

  2.4.4 技术

  在 IaaS 所采用的技术方面,都是一些比较底层的技术,其中有四种技术是比较常用的:
  (1)    虚拟化:也可以理解它为基础设施层的“多租户”,因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟机,并且能在这些虚拟机之间能实现全面的隔离,这样不仅能减低服务器的购置成本,而且还能同时降低服务器的运维成本,成熟的 X86 虚拟化技术有 VMware 的 ESX 和开源的 Xen 。
  (2)    分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统,在这方面, Google 的 GFS 是典范之作。
  (3)    关系型数据库:基本是在原有的关系型数据库的基础上做了扩展和管理等方面的优化,使其在云中更适应。

  (4)    NoSQL :为了满足一些关系数据库所无法满足的目标,比如支撑海量的数据等,一些公司特地设计一批不是基于关系模型的数据库,比如 Google 的 BigTable 和 Facebook 的 Cassandra 等。

  现在大多数的 IaaS 服务都是基于 Xen 的,比如 Amazon 的 EC2 等,但 VMware 也推出了基于 ESX 技术的 vCloud ,同时业界也有几个基于关系型数据库的云服务,比如 Amazon 的 RDS ( Relational Database Service ,关系型数据库服务)和 Windows Azure SDS ( SQL Data Services , SQL 数据库服务)等。关于分布式存储和 NoSQL ,它们已经被广泛用于云平台的后端,比如 Google App Engine 的 Datastore 就是基于 BigTable 和 GFS 这两个技术之上的,而 Amazon 则推出基于 NoSQL 技术的 Simple DB 。