第1章 云计算基础
近年来,一种新的分布式计算模式——云计算在学术界和工业界已经成为热点。被视为IT界第三次革命的云计算将带来工作方式和商业模式的根本性改变。然而,云计算到底是什么?它的产生背景是什么?它涉及哪些关键技术?它的发展前景如何?本章将通过对这些问题的阐述,帮助读者对云计算形成一个初步的认识。
1.1 计算模式的演变
利用有限的资源实现效益的最大化始终是计算机科学技术发展和追求的目标之一。例如从基于集群的计算模式发展到网格计算模式,就是一种有效利用有限资源的进步。当前如火如荼的云计算模式,则可以说是一种计算模式的升华。
要了解云计算是什么和不是什么,理解计算模式的演变过程非常重要。所谓计算模式就是指计算机完成任务的一种运行、输入/输出以及使用的方式。在计算技术的发展历史中,随着微处理器技术和计算机网络技术的不断发展,计算模式经过了集中式计算模式、桌面计算模式和分布式计算模式的变迁[1]。
1.1.1 集中式计算模式
自1946年2月14日世界第一台名字叫“ENIAC(埃尼阿克)”的电子计算机在美国宾夕法尼亚大学诞生[2],到20世纪70年代初,计算机设备不仅庞大和昂贵,而且异常复杂,没有经过特殊培训的人员几乎无法直接使用计算机。因此,当时只有为数不多的机构才有财力购置数量有限的计算机。这些计算机通常都是单独放在特别的房间里,并由专业人员来操作和维护。
为了节约成本,当时的计算机系统大多以一台主机为核心,用户通过终端设备与主机相连。在主机操作系统的管理下共享主机的硬件资源,包括中央处理器、内存/外存、输入/输出设备等。所有的数据存储和计算都在主机上进行,终端设备只负责接收用户的请求和显示计算结果。这就是集中式计算模式。
集中式计算模式的主要特点是可以同时为多个用户服务,主要缺点如下:
1)主机负担过重,所有的计算和存储都集中在主机上。一旦主机出故障,整个系统都将瘫痪。
2)系统扩展不易,当用户数量不断增加时,必须更换主机,否则系统的服务质量就要受到影响。
3)系统的购置、安装及维护等费用较高,不易普及。
1.1.2 桌面计算模式
随着大规模集成电路技术的发展,计算机的小型化成为可能。20世纪70年代,少数科研机构已开始配置供个人使用的微型计算机。但是,个人计算时代真正开始的标志是IBM公司在1981年正式推出的全球首台个人计算机IBM PC[3]。为了推动个人计算机的产业化发展,IBM公司在1982年公开了IBM PC的主要技术。自此,个人计算机得以迅速发展,并由此走入寻常百姓之家。
由于许多PC和工作站已经具备了过去大型计算机的能力,可以存储大量的数据且能进行相对复杂的计算,而价格却非常便宜,因此计算模式的主流从以一台主机为核心转移到以用户桌面为核心的桌面计算模式,也称为单机计算模式或个人计算模式。
1.1.3 分布式计算模式
到20世纪90年代,随着个人计算机的蓬勃发展和局域网技术的成熟,用户通过计算机网络共享计算机资源成为可能。计算机网络的发展促使桌面计算模式迅速向分布式计算方向转移。当时,这种新出现的模式被称为C/S模式[4]。其中,客户机(Client)是一种单用户工作站,提供与业务应用有关的表现、计算、网络连接和各类接口服务;服务器(Server)是一种共享型的多用户处理机,提供业务所需的计算、网络连接、数据库管理和各类接口服务。C/S计算模式会把应用程序所要完成的任务分派到客户机和服务器上,并通过它们之间的协调共同完成。
随着Internet技术的发展和迅速普及,计算机之间的通信和互联超越了地域的限制,改变了人们传统的获取、交换和处理信息的方式。而万维网和浏览器的出现使得互联网从科研机构走向了大众[5]。自20世纪90年代中期开始,一种全新的计算模式(即B/S模式)逐渐形成并发展起来[6]。在这种模式下,用户工作界面是通过浏览器来实现的,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑都在服务器端实现。B/S模式简化了客户端的要求,主要计算工作都在服务器端完成,计算又一次开始向服务器端集中。
伴随着高速网络的不断涌现和计算资源的网络化,拥有个人计算机或工作站的广大用户,迫切需要共享分布于网络上丰富的资源,特别是计算资源。这就使得基于网络的分布式计算模式逐步成为主流的计算模式。简单地说,分布式计算就是让很多计算机同时去帮你做事情、进行计算。
由于分布式计算有着巨大的计算潜力、良好的可扩展性和灵活的体系结构,所以它对于解决大型和小型的科学计算问题都是一种非常合适的模式[7]。从学术角度讲,分布式计算是一种把需要进行大量计算的工程数据分割成小块,由多台计算机分别计算,在上传计算结果后,将结果合并然后得出数据结论的科学。
分布式计算的最早形态出现在20世纪80年代末期的Intel公司。Intel公司利用工作站的空闲时间为芯片设计计算数据集。随着Internet的迅速发展和普及,分布式计算的研究在20世纪90年代后期达到了高潮。目前分布式计算已非常流行。
分布式计算模式的演变历史开始于并行计算,主要经历了集群、网格计算和云计算三大阶段。如图1|1所示。从计算模式的发展趋势来看,网格计算和云计算都是随着计算规模和计算能力的日益提高,以及应用范围的扩大和用户数量的剧增而产生的,是技术和应用发展的必然趋势。云计算作为目前出现的一种最新的分布式计算模式,是由传统的多种计算模型和技术发展而来的,已成为众多企业的一种必然选择和趋势。
图1-1 分布式计算模式的发展趋势
并行计算一般是指许多指令得以同时执行的计算模式。在同时执行的前提下,可以将计算过程分解成若干子过程,之后以并行方式来加以完成。并行计算可分为时间上的并行和空间上的并行。时间上的并行是指流水线技术,空间上的并行是指用多个处理器并行地执行计算。任何高性能计算都离不开并行计算技术。
集群是一种并行或分布式多处理系统,该系统是通过将一组松散集成的计算机软件和硬件连接起来作为一个整体向用户提供一组资源。在某种意义上,一个连接在一起的计算机集群对于用户和应用程序而言就像是一个单一的计算机系统。集群系统中的单个计算机通常称为节点,节点可以是连接在一起的,也可以是物理上分散而通过局域网连接到一起的。集群系统通常用来改进单个计算机的计算速度和可靠性。在一般情况下,集群系统比单个计算机(如工作站)的性能价格比要高得多。
20世纪90年代初,网格计算由学术界提出,伴随互联网的兴起而迅速发展。该模式利用Internet把分散在不同地域的计算机组织成一台虚拟的超级计算机,每一台参与运算的计算机即为一个节点,整个计算则是由成千上万的节点构筑成一个网格,因而被称为网格计算。网格计算的焦点在于支持跨管理域计算的能力,这使它与传统的集群系统或传统的分布式计算相区别。
云计算是一种通过互联网提供弹性计算和虚拟资源服务的分布式计算模式。它是网格计算、分布式计算、并行计算、效用计算、网络存储和虚拟化等传统计算机技术和网络技术发展融合所产生一种新的商业计算模式。
1.2 理解云计算
近年来,云计算作为一个新的技术趋势已经得到了快速发展。然而,由于业界一直没有对云计算形成一个统一的定义,稀奇古怪的所谓“云计算”产品不断涌现。
1.2.1 云计算的起源
早在20世纪60年代,美国科学家John McCarthy就提出将计算能力作为一种公共设施提供给公众,使人们能够像使用水电那样使用计算资源。
针对此设想,通过将所有的计算资源集中起来,采用类似“效用计算”和“软件即服务”的分布式计算技术为人们提供“随需随用”的计算资源。在此背景下,用户的使用观念会发生彻底的改变,即从“购买产品”到“购买服务”的转变,因为他们直接面对的不再是复杂的硬件和软件,而是最终的服务。用户不需要拥有看得见、摸得着的硬件设施,也不需要为机房配置专门的维护人员等,只需要把钱汇给所需服务的供应商,就会得到所需的服务。
伴随着互联网技术的发展和普及,特别是Web 2.0的飞速发展,各种媒体数据呈现指数增长,逐步递增的海量异构媒体数据以及数据和服务的Web化趋势使得传统的计算模式在进行大数据处理时,其表现有些力不从心,新的问题不断涌现。比如传统计算模型至少在如下两个方面已经不能适应新的需求:一是计算速度上受限于内核的性能和个数;二是待处理数据量受限于内存和硬盘容量。对此,人们很容易想到,能否将数量可观的计算机连接起来以获得更快的计算速度、更强大的处理能力和存储能力。这种朴素的解决方案可以追踪到分布式计算模式出现之时,只是当时的应用领域局限于科学计算。
针对上述构思的最新解决方案,是在谷歌、亚马逊等著名IT企业的大力推动下,为实现资源和计算能力的共享以及应对互联网上各种媒体数据高速增长的势头,所提出的一种以数据为中心的新商业计算模式——云计算[8]。
术语“云”第一次出现是在20世纪90年代早期,主要是指大型的ATM网络,是对因特网的一种隐喻。而首次在学术上使用“云计算”一词的是1997年的Ramnath Chellappa教授所描述的“云计算是一个动态的计算框架,计算的边界由技术、经济、地区、信息安全需求以及基础服务供应商决定”。
然而,当下流行的“云计算”中“云”的真正发端是在21世纪初,是伴随着云计算鼻祖之一的Amazon公司于2005年所提出的允许小企业和私人租用其所提供的一组包括存储空间、计算能力等资源服务的称为亚马逊EC2的出现而出现的。
已经成为当今最流行词汇的“云计算”是由Google的前首席执行官Eric Schmidt于2006年8月9日在圣何塞(San Jose)举办的全球搜索引擎会议(Search Engine Strategies,SES)上首次提出的。其真正作为一个新兴的技术热门名词被IT业开始认可并进入产品化流程始于2007年左右。此后,IT行业各大厂商和运营商纷纷制订相应的战略,新的概念、观点、产品和服务不断涌现。例如IBM、Google、Amazon、Microsoft和Yahoo等IT行业巨头都顺势推出各自的云计算产品和技术。同时,云计算也引起了政界和学术界的普遍关注。目前,世界各国都把云计算作为未来战略产业的重点。比如2011年2月,美国政府颁布了“联邦云计算战略”,规定“云计算优先(Cloud First)”;日本政府提出“Kasumigaseki Cloud(霞关云计算)”战略;我国“十二五”规划纲要也把云计算列为重点发展的战略性新兴产业。
总之,云计算的出现为信息技术领域带来了新的挑战,也为信息技术产业带来了新的机遇。
1.2.2 云计算的定义
云计算是一种概念性的说法,而非专指某特定的信息系统。对云计算最简单的理解,就是将计算能力提供出来作为一种服务,使企业或个人可以通过因特网取得服务。用户所需要的数据,不用存储在个人计算机上,而是放在网络的“云”上面,在任何可以使用网络的地方都可以使用。云代表了规模庞大的计算能力,由云服务供应商建造大型机房,提供各种软件和应用,让用户随时使用超级计算机的计算能力和最新应用软件,用户却不知道服务器的位置或数据的所在,就像是天上的“云”一般,虚无缥缈又抬头即见。
有人主张将Cloud Computing翻译为“云计算”,但也有人将它解读为“云端计算”。“云”即是我们最常使用的因特网;“端”是指使用者端或泛指用户应用网络服务来完成事情的方式。云计算的目标就是没有软件的安装,所有资源都来自云端,使用者端只需要具备连上云端的设备和简单的接口如浏览器即可。因此云计算是一种基于因特网的计算模式,通过因特网上异构、自治的服务为个人和企业使用者提供“随需随用”的计算资源。
维基百科上给出的云计算定义:“一种基于因特网的计算新方式,通过因特网上异构、自治的服务为个人和企业使用者提供按需即取的计算。云计算的资源是动态、易扩充套件而且是虚拟化的,通过因特网提供的资源,终端使用者不需要了解云端中基础设施的细节,不必具有相应的专业知识,也无须直接进行控制,只需关注自己真正需要什么样的资源以及如何通过网络来得到相应的服务”。
但是,当谈及云计算的定义时,大多数研究者都会引用美国国家标准与技术研究院(National Institute of Standard and Technology,NIST)的定义[9]:“云计算是一种模式,支持根据用户需求通过网络方便地访问可配置的计算资源(如网络、服务器、存储器、应用和服务)的共享池,而该池可通过最少的管理工作或服务供应商干预进行快速配置和交付。”。具体来讲,NIST提供的云计算定义中包括了五个基本特征、三个云服务模型和四个云部署模型,如图1-2所示。
图1-2 NIST提供的云计算定义
需要指出的是,由于考虑的角度不同,业界对云计算的提法也稍有不同。IBM、Google和Amazon等公司也都从自身角度出发给出了云计算的定义。尽管各自的表述方式和应用特点不同,但云计算的如下特性是可以被明确认同的:
1)硬件和软件都是资源,可以是物理的,也可以是虚拟的,通过互联网以服务的方式提供给用户。
2)资源以分布式共享的形式存在,以单一整体的形式呈现。
3)资源可以根据需要进行动态的扩展和配置。
4)用户按需使用云中的资源,而不需要管理它们。
综上所述,云计算将所有的计算资源集中起来,并由软件实现自动管理,无须人为参与。这使得应用提供者无须为烦琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。
1.2.3 云计算的类别
云计算可分为云计算服务和云计算技术。前者的重点是放在提供信息服务给用户,如Salesforce公司所提供的在线客户关系管理CRM服务及Amazon公司所提供的在线动态虚拟主机EC2服务等云计算解决方案;后者的重点是放在提供高可靠性的信息基础平台,如IBM所提供的蓝云数据中心基础建设服务及即时通信软件Skype所提供的P2P语音计算平台服务等云端计算解决方案。
1.2.4 云计算的特点
由图1-2可知,由NIST给出的云计算的五个基本特征如下:
(1)按需自助服务 云用户可以按需自动获得计算能力,如服务器时间和网络存储,而无须与服务供应商的服务人员互动,这种方式有别于传统的服务需要借助人力协调改变。
(2)广泛的网络访问 云服务能力通过网络和标准的机制提供,支持各种标准接入手段,包括各种客户端平台如移动设备和笔记本电脑等,也包括其他传统的或基于云服务的使用。目前云端的使用大部分都是通过浏览器进行。
(3)资源池 云服务供应商将其计算资源汇集到资源池中,采用多租户模式,按照用户需要,将不同的物理和虚拟资源动态地分配或重新分配给多个用户使用。资源通常包括存储、CPU、内存、网络带宽以及虚拟机等。即使是私有云,在同一组织内部的不同部门往往也趋向将资源池化。资源池化的目的是在众多用户之间实现资源共享。
(4)快速的弹性 弹性是指系统能够根据用户对资源需求的动态变化,动态地调节物理机的负载,并维持系统性能。云计算中的物理资源在随时发生变化,为了实时保证云服务的性能需求,就需要云计算系统能够及时地捕捉云中资源的变化情况,并能在某些情况下自动对服务占有的资源进行快速扩容、释放和回收。对于用户来说,云端可供应的服务能力近乎无限,且能依据自身的需求,随时按需购买所需的计算能力。
(5)可测量服务 用户购买的服务可以量化并测量。云系统之所以能够自动控制优化某种服务的资源使用,是因为云系统利用了经过某种程度抽象的测量能力,如存储、CPU、带宽或者活动用户账号等。人们可以借此来监视和控制资源使用并产生报表等。
从云计算的概念中还可以得出云计算的特性是大规模、多用户、虚拟化、高可靠性及成本低廉等。
(1)大规模 云计算诞生之初的使命就是使用大量的计算机,解决大数据集处理的问题,并存储海量数据。所以无论是从云计算本身的规模,还是其处理数据的规模,云计算的一大主要特性就是大规模。
目前,Google公司云数据中心的服务器已经超过百万台,IBM、Amazon和Yahoo等公司的数据中心也有几十万台服务器。企业私有云一般也拥有数百甚至上千台服务器。
(2)多用户 云计算的另一大特性就是将资源分享给许多用户同时使用,其不同于以往的计算模式将特定的资源交付给特定的用户使用。多用户不仅体现在用户数量上,而且体现在用户种类上,不同服务需求的用户也可以同时使用同一个云平台。云计算平台使用虚拟化技术满足不同的用户需求。
(3)虚拟化 虚拟化技术是云计算的核心,云计算的虚拟化主要体现在如下两个方面:①将多台服务器虚拟成统一的资源提供给用户,使用户可以透明地使用所需的资源而不需要关心底层的技术实现细节;②将一个物理资源虚拟成多个虚拟主机提供给不同的用户使用,通过虚拟化来隔离用户。总之,通过虚拟化技术,云计算可以将资源统一成资源池,动态地提供给用户使用。
(4)高可靠性 云服务供应商会尽量采取多种措施来保障其所提供服务的高可靠性,如基于数据多副本的容错技术和自动失效节点检测技术等。越来越多的实例已经表明依靠云数据中心来处理任务比本地计算机更可靠。
(5)成本低廉 由于云计算的特殊容错措施使得其可以采用极其廉价的硬件来构成庞大的云,而云计算所采用的自动化管理技术则显著降低了云数据中心的运营成本。云计算的通用性使得资源的利用率得到大幅提升。对用户而言,云计算不但省去了基础设备的购置运维费用,而且可以按需使用廉价的服务,同时能根据企业成长的需要不断扩展订购的服务,不断更换更加适合的服务,提高了资金的利用率。
1.2.5 云计算的优势
对于没有庞大内部IT资源的中小型企业而言,云计算可以让他们专注于业务经营而不是IT事务。他们可以利用广泛的计算、存储和网络产品组合优势,经济、高效地随企业的发展和需求进行扩展,同时只需很少的前期资本支出。
对云服务提供商而言,由于云计算服务不需要将软件安装在用户的计算机中,降低了商业软件被破解的风险。然而,把数据移到云端,企业可能面临主管当局审查等方面的挑战,加上有些云端服务业供应商可能未把用户数据完全、彻底地删除干净,而使机密数据外泄。
就目前的情况来看,云计算正在颠覆世界各地企业的IT消费方式,采用云计算模式可带来许多好处和优势。比如[10]:
1)节省开支。据统计,信息设备的性能每隔18个月更新一倍,企业IT设备的采购更新是永无止境的竞赛,对于企业来说是一项庞大的资本支出,为了维持企业竞争力而不得不进行更替。若企业采取云计算,便可以省去巨额的信息设备更新费用,企业只需就其本身所需求的服务支付费用给云服务供应商即可。云计算降低的不仅仅是IT设备成本,同时更可以降低人事成本和管理成本等多项管理费用。企业只需专注自己擅长的内容,进而提升企业竞争力。
2)应对需求。随着企业不断发展,云计算环境将随之增长。当需求无法预测时,企业可以相应地增加或减少容量,同时只需为所使用的服务付费。这一切都源于云计算的弹性特性。
3)用户无须担心基础设施运维。云计算服务供应商承担对云计算平台和服务进行全天候的监控和维护。除保证云用户的数据安全以外,他们还将随时按云用户的需求提供创新且实用的解决方案。
4)提高安全性与合规性。云主机托管供应商将从基础设施层面增强弹性和灵活性以控制安全风险,并将与用户合作解决合规性和监管要求。
5)减少碳足迹。在数据中心而不是现场进行托管能充分利用最新的节能技术优势。此外,由于云服务供应商在共享基础设施上托管多个客户,他们可以更有效地利用能源、水和空间等资源。
6)资源的有限共享。用户可以在权限许可下共享云计算平台中的数据。
7)可移植性。这一特性使得云计算服务能够允许云端的节点出现错误甚至是崩溃。因为云计算的可移植性,崩溃节点的任务可以分配到其他的节点而不会影响云计算服务的正确运行。
1.2.6 云计算的挑战与机会
尽管云计算前景一片看好,但是发展云计算必然会面临一些新的挑战。比如[11]:
1)软件授权费问题。目前,Google或其他云服务供应商所提供的服务都是自家的产品,如Chrome操作系统和Gmail邮件服务等。但是从长期来看,云服务提供商应纳入其他软件厂商的产品,届时软件授权费用如何计价,有待软件厂商和云服务供应商协商。
2)安全性与机密性问题。企业和政府机构等群体,在考虑安全性的情况下,不太可能把他们的数据保存在别人那里。因为这涉及政府和企业的机密,所以这些单位通常是自己购买服务器和软件,自己搭建专用云,并服务于内部人员。另外,云使用者的行为、习惯及爱好等被使用者视为隐私的部分,将会更直接地暴露在网络之上。因此,云计算的安全性与机密性是企业的主要关注点。
3)服务移植弹性小。目前云计算并无统一的行业标准,也就是说,企业用户难以从一家云服务供应商转换到其他云服务提供商,即降低了云服务移植的弹性。
4)数据访问速度的稳定性。云端毕竟是在远方,数据的访问速度自然远比不上本地的计算机系统。所以除非客户端联机到云端的速度足够快,否则这也可能会成为推广云计算的障碍。
5)用户被绑架问题。很多云服务提供商都宣称:“如果我们无法提供高质量的服务,你就应该可以离开。作为用户,你应该享受完全的控制权”。然而,正如Hybrid Cloud Gateway公司的创始人Dan Koffler所言:“云计算领域有一种流行的观念,即数据是有重量的,一旦将数据搬进云服务提供商的云端,再要搬出来就很费劲了”。其原因在于:①很多云服务提供商为用户设置了重重障碍,使之难以转用其他服务商所提供的服务;②数据迁移成本高,即使将数据迁出未必很困难,但数据迁出成本有可能会比迁入的成本更高。
1.2.7 云计算与网格计算的差别
云计算和网格计算都是由分布式计算所发展出来的概念。云计算和网格计算之间并没有太大的不同,只是网格计算这个名词出现得比较早,它的重点是异构系统之间计算资源的整合。简单地说,就是让不同类别的计算机或具有不同操作系统的计算机可以沟通,并且分享彼此的计算资源。在因特网还没有今天这么发达之前,许多企业采用网格计算,其原因是为了让组织内部的网络资源达到更好的使用效率,比较知名的网格计算应该是寻找外星人(Search for ExtraTerrestrial Intelligence,SETI)计划。
总体来讲,网格计算与云计算的差别在于:
1)网格计算强调的是资源共享,在网格系统内的任何用户都可以获取其他人的闲置资源,同时也必须贡献出自己的闲置资源给其他人;云计算则是让使用者可以独占资源,这些资源是由少数的机构和组织提供,而且大多数基于云计算的产品都要保证一定的服务质量,一般用户只需要付出一定金额即可租用,而无须奉献出自己的计算资源。
2)网格计算以供专家使用居多,重点放在需要复杂计算的单一任务;云计算则比较偏重大众应用,多数应用不需要进行复杂的计算。但是由于大众的数量相当庞大,所以累积起来的计算需求也相当可观。
3)网格计算通常只是使用专属的应用协议和数据格式,但云计算没有此限制。
4)网格计算着眼于整合众多异构平台。云计算则强调在本地资源有限的情况下,利用互联网获取云端的计算资源。
5)云计算的概念是以Web为前端,数据全部放后端,用户本身不需要保存数据。这样用户可以不用担心不同设备上数据无法同步的问题,也可以随时访问它。为了方便管理并充分运用服务器的效能,云计算通常使用虚拟化技术。但网格计算不存在这些情况。
总而言之,我们可以用“云计算是平民化的网格计算”来说明它们之间的关系。
1.2.8 云计算的发展历程
云计算是引领未来新技术发展的航向标,同时也会给人类的生产和生活带来巨大的变革。了解云计算的发展历程,可以洞悉云计算的发展规律,从中可以更好地洞察云计算技术的发展趋势。下面是对云计算发展历程的简要回顾[12]。
1959年6月,Christopher Strachey发表虚拟化论文,虚拟化是今天云计算基础架构的基石。
1961年,John McCarthy提出将计算能力作为一种公共设施提供给公众。
1983年,Sun公司提出“网络即计算机”的名言,用于描述分布式计算技术带来的新世界,今天的云计算正在将这一理念变成现实。
1997年,南加州大学教授Ramnath K.Chellappa提出云计算的第一个学术定义。
1998年,Vmware公司成立并首次引入x86的虚拟技术。
1999年,Marc Andreessen创建第一个商业化的IaaS平台LoudCloud。
1999年,Salesforce公司成立,宣布“软件终结”革命开始。
2000年,SaaS兴起。
2004年,Google公司发布MapReduce论文。
2004年,Doug Cutting和Mike Cafarella实现Hadoop的HDFS和MapReduce。
2005年,Amazon公司宣布Amazon Web Services云计算平台。
2006年,Amazon公司相继推出在线存储服务(S3)和弹性计算云(EC2)。EC2允许小企业和私人按照自己的需要租用其数据中心的处理能力,即弹性计算云形成了云计算的雏形。
2006年,Sun公司推出基于云计算理论的“BlackBox”计划。
2006年8月9日,Google前首席执行官Eric Schmidt在全球搜索引擎会议上第一次提出云计算概念。Google的云计算源于“Google 101”项目。
2007年10月,Google和IBM公司在美国大学校园内进行云计算的推广计划。Google和IBM公司为斯坦福大学、麻省理工学院、卡内基梅隆大学、马里兰大学及加州大学伯克利分校等大学提供相关的软件、硬件设备及技术支持。此计划的主要目的是降低分布式计算技术在科学研究领域的成本。
2007年3月,Dell公司成立数据中心解决方案部门,先后为全球五大云计算平台中的三个(Windows Azure、Facebook和Ask.com)提供云基础架构。
2007年7月,Amazon公司推出简单队列服务SQS,这项服务使托管主机可以在存储计算机之间传输消息。
2007年11月,IBM公司首次发布云计算商业解决方案,推出“蓝云”计划。
2008年1月,Salesforce公司推出世界上首个PaaS应用。
2008年1月30日,Google公司在中国台湾开启“云计算学术计划”项目。
2008年2月1日,IBM公司决定将在中国无锡建立世界上首个云计算中心。2008年5月10日,此云计算中心投入运营。2008年6月24日,IBM公司在北京IBM中国创新中心成立IBM大中华区云计算中心。
2008年7月29日,Yahoo、Intel和HP公司宣布一项橫跨新加坡、德国和美国的联合研究计划,以此来推动云计算的发展。该计划要与合作伙伴创建6个数据中心作为研究试验平台,其中每个数据中心配置1400~4000个处理器。
2008年10月,Microsoft发布其公有云计算平台Azure,由此拉开了微软的云计算大幕。
2009年1月,阿里软件在江苏南京建立首个“电子商务云计算中心”。
2010年3月5日,Novell公司与CSA共同宣布一项云计算服务供应商中立计划,即“可信任云计算计划(Trusted Cloud Initiative)”。
2010年7月,NASA与包括Rackspace、Intel、AMD、Dell等在内的一些支持厂商共同宣布“OpenStack”计划。与此同时,微软在2010年10月表示支持OpenStack与Windows Server 2008 R2的集成。2011年2月,Cisco正式加入OpenStack计划,并着重研发基于OpenStack的互联网服务。
2011年10月20日,“盛大云(Grand Cloud)”宣布旗下产品MongoIC正式对外开放,这是中国第一家专业的MongoDB云服务,同时也是全球第一家支持数据库恢复的MongoDB云服务。
2012年9月,欧盟委员会发布“释放欧洲云计算潜力”报告,提出建立涵盖标准符合性、互操作性和数据可迁移性等内容的云服务认证体系。
2013年,微软推出云操作系统,包括Windows Server 2012R2、System Center 2012 R2和Windows Azure Pack在内的一系列企业级云计算产品及服务。
2014年,谷歌公司宣布全面支持Hadoop。
1.2.9 云计算国内外发展现状
2007年年底,云计算开始受到关注并迅速得以发展,其发展前景十分广阔。到目前为止,Google、IBM、Microsoft和Amazon等世界级IT大型公司都推出了各自的云计算平台,并把云计算作为他们未来重点发展的最主要战略之一。
Google是云计算技术的领跑者,同时也是云计算技术的最大实践者。Google基于云计算提供了大量的云服务,如Google Gmail、Google Docs、Google App Engine、文件处理系统GFS、分布式计算编程模型MapReduce、分布式锁服务Chubby、分布式结构化数据表BigTable、分布式存储系统Megastore、分布式监控系统Dapper等云计算技术。
作为互联网上最大的在线零售商,Amazon也推出了自己的云产品,如弹性计算云EC2、简单存储服务S3、简单数据库服务SimpleDB、简单队列服务SQS、弹性MapReduce服务、内容推送服务CloudFront、电子商务服务DevPay和FPS,涉及数据均衡和数据冲突处理等云计算技术。其中最具代表性的是S3和EC2。
2007年,IBM推出“蓝云”计算平台。蓝云计算平台包括一系列的云计算产品,它通过架构一个可全球访问的、分布式的资源结构,使数据中心在类似于互联网的环境下运行计算。图1-3为IBM蓝云产品架构。
图1-3 IBM蓝云产品架构
由图1-3可知,蓝云计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli Provisioning Manager)、IBM Tivoli监控软件(IBM Tivoli Monitoring)、IBM WebSphere应用服务器和IBM DB2数据库组成,采用了PowerVM和Xen虚拟化软件、Linux操作系统映像以及Hadoop。
“蓝云”的硬件平台环境与一般的x86服务器集群类似,只是使用刀片的方式增加了计算度。“蓝云”软件的一个重要特点是虚拟化技术的使用。虚拟化的方式在“蓝云”中有两个级别:一个是在硬件级别上实现虚拟化;另一个是通过开源软件实现虚拟化。硬件级别的虚拟化可以借助IBM P系列服务器和IBM PowerVM虚拟化解决方案实现。软件级别上的虚拟化采用开源的Xen虚拟化软件,通过Xen能够在Linux基础上运行另外一个操作系统。蓝云软件平台的另一特点是使用Hadoop。
继Amazon、Google和IBM之后,微软于2008年10月推出了自己的云计算产品,即Windows Azure操作系统。Azure通过在互联网架构上打造新云计算平台,让Windows真正由PC延伸到“蓝天”上。Azure的底层是微软全球基础服务系统,由遍布全球的若干数据中心构成。
除了我们所熟知的IT巨头的云计算平台外,开源云计算平台更是被认为是IT的发展趋势。例如:①Eucalyptus是一种开源的软件基础结构,通过集群或工作站群实现弹性的云计算。它最初是加利福尼亚大学为进行云计算研究而开发的Amazon EC2的一个开源实现,与EC2和S3的服务接口兼容,使用这些接口的所有现有工具都可以与基于Eucalyptus的云协同工作。与EC2一样,Eucalyptus依赖于Xen进行操作系统虚拟化,现在已经商业化,发展成了Eucalyptus Systems Inc。不过,Eucalyptus仍然按开源项目进行维护和开发。②OpenNebula是一款为云计算而打造的开源工具箱。OpenNebula的目标是将一群实体集群转换为弹性的虚拟基础设备,且可动态自适应地随服务器工作负载变化而改变。它允许与Xen、KVM或VMware ESX一起建立和管理私有云,同时提供专门的适配器与Amazon EC2配合来管理混合云。除了像Amazon一样的商业云服务供应商外,在不同OpenNebula实例上运行私有云的Amazon合作伙伴也同样可以作为远程云服务供应商。目前,OpenNebula可支持Xen、KVM和VMware,以及实时存取EC2。它还支持对象文档的传输、复制和虚拟网络的管理。OpenNebula支持多种身份验证方案,包括基本的用户名和密码验证,以及通过SSH协议进行密钥验证。
在中国,云计算的主要增长点在于国内IT企业兴起的云计算中心的建立,以IBM为中心扩展开来。2008年5月10日,IBM在中国无锡太湖新城科教产业园建立中国第一个云计算中心并投入运营。2008年6月24日,IBM在北京IBM中国创新中心成立了中国第二家云计算中心即IBM大中华区云计算中心。
随后,一些国内的IT巨头如中国移动、百度、中国电信、阿里巴巴、腾讯、华为、中兴和曙光等,也对云计算进行了研究和实践。
中国移动自2007年起开始推出“大云(Big Cloud)”计划,目标是建造业务平台云、IT支撑云和公众服务云,在2010年5月21日召开的第二届中国云计算大会上正式发布“大云”1.0版本。该平台包括分布式文件系统、分布式海量数据仓库、分布式计算框架、集群管理、云存储系统、弹性计算系统和分布数据挖掘工具等功能。
2008年11月25日,中国电子学会专门成立了云计算专家委员会。2009年5月22日,中国电子学会组织的首届中国云计算大会隆重举行。
2009年9月10日,在阿里巴巴10周年庆典会上,阿里巴巴云计算团队以独立身份出现,而且命名为“阿里云”的子公司正式成立。该公司主要由原阿里软件、阿里巴巴集团研究院以及B2B与淘宝的底层技术团队组成,主要从事基础技术的研发,并将推出用于电子商务服务的云计算中心。
2009年,世纪互联成立了专门的云计算公司云快线,云快线从IaaS切入云计算,目前,已有CloudEx弹性计算(CloudEx Computing Service)和CloudEx弹性存储(CloudEx Storage Service)两款产品。从技术层面看,CloudEx平台采用了硬件设备虚拟化技术,把物理层面的计算机、服务器和CPU等设备虚拟成为一个资源池。用户的需求是分配和划分虚拟机的唯一标准。它使得运营商可以得到更加便捷的云计算服务,实现了资源的跨地域和跨平台的部署,形成了统一分配机制。
新浪在2009年推出Web应用开发与运行平台SAE[8],主要面向国内用户,提供集成式开发平台。
2011年6月30日,天津大学与曙光信息产业股份有限公司合作共建“天津大学云计算中心”的协议签订仪式在天津大学举行。这是我国首个高校云计算中心,该中心的目标期望是达到提供每秒计算速度达11万亿次的计算能力。
2013年8月,作为国内首个物联网云计算中心的无锡城市云计算中心正式启用。
2014年1月,曙光公司、NVIDIA公司和思杰公司共同合作推出图形云计算产品,解决了GPU硬件虚拟化的技术难题,这是我国首款真正意义上的专业图形云计算产品。
总体来讲,国内主要是由大型互联网公司提供云计算服务,业务主要是以IaaS+PaaS形式的开放平台服务,其中IaaS服务已经较为成熟,而PaaS服务尚处于起步阶段。
1.3 云计算服务模型
理解云计算的两个重要方面就是理解它的服务模型和部署模型。
1.3.1 SPI服务模型
云计算的主要原则之一就是“as-a-Service”范式的一些服务。这些服务是由服务供应商提供。目前,大家对云计算的服务模型已有了一个相对统一的认识,即在云计算中,根据资源池中资源的类别,把云计算所提供的3类服务(平台即服务、基础设施即服务和软件即服务)归类为SPI服务模型。
“SPI”这个缩略词对应SaaS、PaaS和IaaS的首字母。图1-4所示为SPI服务模型框架[13]。其中,IaaS是所有云服务的基础,PaaS建立在IaaS之上,而SaaS又建立在PaaS之上。
图1-4 SPI服务模型框架
SPI模型代表服务。不同应用领域和不同部署类型的云都可以用来作为一种服务。SPI框架是目前最被广为接受的云计算分类机制。事实上,NIST、CSA和其他组织都遵循这个框架,绝大部分云服务供应商也支持这个概念。
1.3.2 IaaS模型
NIST对IaaS的阐述是:“提供给用户的能力是云处理、存储、网络和其他基本的计算资源,其中云用户能够部署和运行任意软件,它可以包括操作系统和应用程序。该用户并不管理或控制底层的云基础设施,但是拥有对操作系统的控制、存储及部署的应用程序,并有可能选择网络组件如防火墙和负载均衡器等”。换言之,IaaS供应商提供给用户所需要的计算机硬件、网络和其他必要的基础设施资源。它包括了将资源抽象化的能力,并交付连接到这些资源的物理或逻辑网络连接,终极状态是IaaS供应商提供一组API,允许消费者与基础设施进行管理和其他形式的交互。
IaaS是云服务供应商向用户出租其所能提供的计算能力、存储功能、网络计算和其他多种资源。用户可以利用付费租来的资源去开发和部署属于自己的任意应用程序,如操作系统和软件等。这种服务类型依靠的是云平台上的虚拟计算机集群的计算能力和安全稳定的存储能力。IaaS的最大优势就是用户可以自行申请和释放节点,费用是按照使用的节点量来计算的,即用户只用按需租用相应的计算能力和存储能力,大大降低了在硬件上的开销。在这种情况下,用户对配置的资源有控制能力,但对底层的云基础设施没有控制权。IaaS模型如图1-5所示。
IaaS供应商需提供如下功能:
图1-5 IaaS模型
图1-6 PaaS模型
1)资源抽象。使用资源抽象的方法能更好地调度和管理物理资源。
2)资源监控。通过对资源的监控,能够保证基础设施高效运行。
3)负载管理。通过负载管理,不仅能使部署在基础设施上的应用更好地应对突发情况,而且还能更好地利用系统资源。
4)数据管理。数据的完整性、可用性和可管理性是对IaaS的基本要求。
5)资源部署。将整个资源从创建到使用的流程自动化。
6)安全管理。保证基础设施和其提供的资源能被合法地访问和使用。
7)计费管理。通过细致的计费管理能使用户更灵活地使用资源。
Rackspace和NASA联手推出的云计算平台OpenStack是典型的IaaS平台之一,为那些希望给用户提供云服务的托管供应商们创造了进入云计算领域的机会。Eucalyptus也是典型IaaS平台之一,通过计算集群或工作站群实现弹性的、实用的云计算。AWS是目前主要的IaaS云服务供应商之一,EC2是其提供的热门服务。
1.3.3 PaaS模型
1.PaaS概述
PaaS模型如图1-6所示。NIST对PaaS的阐述是:“提供给用户的能力是可以使得用户在云平台的基础设施上部署属于自己的应用,用户部署自己应用的同时可以使用供应商所提供的支撑编程工具和程序开发语言。消费者无须管理或控制底层的云基础设施(网络、服务器、操作系统和存储等),但消费者控制对该部署的应用程序和有可能应用托管环境的配置”。
PaaS模型的主要目的是给应用程序开发者提供程序开发平台,也就是提供一个建构、部署与管理的环境,让他们能创造并开发出新的服务或应用,并且快速地将其软件或程序部署在云上。
在PaaS模式中,平台通常包括操作系统、编程语言的运行环境、数据库和Web服务器等。用户完全不需要也不能对网络及服务器等底层基础设施进行管理和控制,但可以控制和部署自己的应用。这种服务模式能够给用户提供更多的、更高效的硬件和软件服务,既可以减少用户自行开发的成本,又可以完全实现软件的重用。
PaaS平台在云架构中位于中间层(见图1-4)。PaaS能将现有的各种业务能力进行整合,具体可以归类为应用服务器、业务能力接入、业务引擎和业务开放平台,向下根据业务能力需要测算基础服务能力,通过IaaS提供的API调用硬件资源,向上提供业务调度中心服务,实时监控平台的各种资源,并将这些资源通过API开放给SaaS用户。
Gartner把PaaS平台划分为两类[14]:一类是应用部署和运行平台APaaS;另一类是集成平台IPaaS。人们经常说的PaaS平台主要是指APaaS,如新浪的SAE、谷歌的GAE、微软的Azure都是其典型例子。其中,Saleaforce公司的Force.com是业界内第一个可以称为PaaS的平台。PaaS的理念也是该公司提出来的。Force.com向企业提供在云端上快速创建和实施业务应用程序所需的一切,包括数据库、无限的实时定制、强大的分析、实时工作流程和审批、可编程云逻辑、集成、实时移动部署、可编程的用户界面和网站功能。GAE为使用者提供Web应用开发平台,并对所使用的资源进行严格分配,使平台上托管的应用拥有良好的自动扩充性以及高可用性。其主要特征:①应用的开发和运行都基于同样的平台,故兼容性问题较少;②开发者无须考虑系统可允许的应用扩充性和服务容量等问题;③可提供运维管理功能以及帮助开发人员对应用进行监控和计费。
为了支撑整个PaaS平台的运行,服务供应商需提供如下功能:
1)友好的开发环境。通过提供IDE等工具使用户能在本地方便地进行应用的开发和测试。
2)丰富的服务。PaaS平台会以API的形式将各种各样的服务提供给上层的应用。
3)自动的资源调度。此特性不仅能优化系统资源,而且能自动调整资源来帮助运行于其上的应用更好地应对突发流量。
4)精细的管理和监控。提供对应用层的管理和监控,如通过精确计量应用所使用和消耗的资源来更好地计费。
这种服务模式的优势,是解决了平台价格昂贵、平台即时升级、用户需求估算不够科学及平台管理复杂等问题。
2.示例
当以传统的方式搭建一个Web网站时,往往需要先购置并托管服务器,然后安装操作系统及各种服务软件等,待所有烦琐的工作都准备好之后才能开始编写代码。而且开发环境与运行环境还会有一定的差别,需要把代码部署到运行环境当中进行测试,当一切都处理好后,网站才能上线。
假如使用PaaS开发和部署一个Web网站,则会使Web部署工作变得极其简单。例如,使用SAE,用户可以在任何时间、任何地点登录到SAE,通过浏览器就可以编写代码,随时随地都可以进行部署调试,只需要单击按钮,切换一下版本就可以上线了,不必购置服务器和搭建各种环境等。
为了实际体会PaaS平台,我们可以注册新浪云SAE,并进行简单的代码开发与发布。SAE支持Python、PHP和Java三种开发语言,支持MySQL和NoSQL两种数据库。同时SAE还具备版本管理功能等,总之,SAE提供了开发一个应用程序所需要的全部环境。
SAE首页、代码编辑界面和代码发布测试界面分别如图1-7~图1-9所示。
图1-7 SAE首页
图1-8 代码编辑界面
图1-9 代码发布测试界面
IT人员,即可通过互联网使用信息系统。就像打开自来水龙头就能用水一样,企业根据实际需要,从SaaS供应商租赁软件服务。
传统的购买软件的方法所涉及的用户加载软件到自己的硬件上,以换取许可费。用户也可以购买一个维护协议,以获得补丁软件或其他支持服务。用户关注的是业务系统的兼容性、安装补丁以及遵守许可证协议。
SaaS供应商以租赁的概念提供客户软件服务,而非购买,比较常见的模式是提供一组账号密码,规定一个使用期限。由于SaaS模式是一个多租户架构模式,这意味着物理后端的硬件基础设施在许多客户之间共享,但在逻辑上是独一无二的单独客户。多租户架构的设计最大限度地提高了资源的跨租户共享,但仍能够安全地区分属于每个租户的数据。总之,SaaS服务模式与传统许可模式软件存在很大的不同,是未来应用软件的发展趋势。
Salesforce的客户关系管理Saleforce CRM、微软的Office Live以及谷歌的Docs都是SaaS的典型例子。其中Salesforce于1999年由当时27岁的Oracle高级副总裁,俄罗斯裔美国人Marc Benioff创办。软件即服务的理念由他首先提出,并运用于客户关系管理服务软件。目前已有约72500家公司采用了Salesforce的Saleforce CRM。
实现SaaS服务,服务供应商需提供如下功能:
1)随时随地访问。在任何时候和任何地点,只要接上网络,用户就能访问SaaS服务。
2)支持公开协议。通过支持公开协议如HTML,能够方便用户使用。
3)安全保障。SaaS供应商需要提供一定的安全机制,不仅要使存储在云端的用户数据处于安全的境地,而且也要在客户端实施一定的安全机制来保护用户。
4)多租户机制。多租户机制不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。
这种服务模式的优势是,由服务供应商维护和管理软件、提供软件运行的硬件设施,用户付费使用软件,享有软件使用权。用户只需拥有能够接入互联网的终端,即可随时随地地使用软件。在这种模式下,用户不再像传统模式那样在硬件、软件和维护人员等方面花费大量资金,只需要支出一定的租赁服务费用,通过互联网就可以享受到相应的服务。
但是,SaaS服务模式也有一些缺点,比如:
1)安全性不高。企业,尤其是大型企业,并不热衷于使用SaaS的原因就是其安全问题。他们要保护机密数据,不希望这些机密数据由第三方来保管。
2)缺乏标准化。目前的SaaS解决方案缺乏标准化。这个行业刚刚起步,没有明确的解决办法,不同服务提供商通常拥有不同的解决方案。
2.示例
为了更好地体验SaaS,我们可以在线体验微软Office的在线应用OneDrive。用户只需要一个浏览器,就可以随时随地在任何设备上存储和共享照片、视频、文档及更多内容。例如,可以在线编辑Office Word文档,并存储在OneDrive上,这样就可以随时通过一个浏览器查看或继续编辑这个文档。
其中,OneDrive首页、在线创建Word文档界面、在线编辑Word文档界面和在线保存Word文档分别如图1-11~图1-14所示。
3.PaaS发展前景
由于企业对软件开发和维护所投入的时间和资金有限,导致SaaS在原地停留。IaaS为用户提供灵活性和自主权的同时,增添了复杂性。另外,IaaS可能无法通过门户提供系统实时编制(Orchestration)能力,而PaaS屏蔽底层的硬件基础架构,为用户提供覆盖软件全生命周期中需求分析、设计、开发、测试、部署、运行及维护各阶段所需的工具,降低了用户进行应用程序开发的技术难度及开发成本。
在业界,自2011年上半年以来,PaaS平台的重要性也逐渐受到如IaaS服务厂商与虚拟化技术厂商的重视。其中以虚拟化技术为主的Citrix与VMware,都纷纷推出PaaS服务,希望以开源的优势吸引软件开发者与厂商的投入。甚至以IaaS业务为主的Amazon,也与程序开发平台公司Beanstalk合作,提供以Java为基础的程序开发平台。
深入分析从过去到现在各大云端公司推出的程序开发平台,对其支持平台的多寡与开发语言的支持数量的多寡两个轴向分析后可发现,近年来程序开发平台已逐渐走向可支持多开发语言与跨平台运作的特性,其中更可发现Java语言为各大开发平台优先支持的语言,预期未来平台将走向可支持多种运行时系统,甚至支持多种设备的应用程序,以协助厂商快速扩大用户的应用规模。比如,2011年提出开放源码的PaaS服务Cloud Foundry,使用各种开源开发工具和中间件来提供PaaS服务。Cloud Foundry采用开源的网站平台技术,所以开发者的应用程序也可以任意转移到其他平台上而不受限于PaaS平台。Cloud Foundry可以支持多种开发框架,包括Spring for Java、Ruby on Rails、Node.js以及多种Java虚拟机开发框架等。Cloud Foundry平台也提供MySQL、Redis和MongoDB等数据库服务。
因此,有理由相信,更多的中小企业将会在未来的几年采用PaaS云。PaaS将是云计算的最终目标。
1.3.4 SaaS模型
1.SaaS概述
SaaS模型如图1-10所示。NIST对SaaS的阐述是:“提供给用户的能力是运行在云基础设施上的、由云服务提供商所提供的应用程序。用户可以通过各种客户端设备,比如Web浏览器这样的瘦客户端界面进行访问。用户并不管理或控制底层的云基础设施,包括网络、服务器、操作系统和存储,甚至单个应用程序的功能。但有限的用户特定应用程序的配置则可能是个例外”。
SaaS模型的主要目的是使传统上必须自己在本地服务器安装、执行及维护软件的一种模式,改而通过远程数据中心安装、执行并维护,主要是提供给终端的使用者使用,是一种利用Web平台当作软件发布方式的软件应用,再以浏览器访问使用的软件递送模式,除了利用网络的存取和管理,也因服务集中,而有利于软件供货商进行更新或维护。
图1-10 SaaS模型
SaaS供应商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无须购买软件和硬件、建设机房、招聘
图1-11 OneDrive首页
图1-12 在线创建Word文档
图1-13 在线编辑Word文档
图1-14 在线保存Word文档
综上所述,IaaS为云用户提供基础设施服务;PaaS基于底层的基础设施资源,为用户提供定义好API的编程模型和应用程序运行环境;SaaS基于底层的基础设施、编程模型和运行环境来开发,为用户提供云应用软件。
1.4 云计算部署模型
依据服务方式,云计算可以采用公有云、私有云、社区云或混合云的部署类型交付给用户。一个组织可以根据组织的需要实现一个或多个模型或组合部署模型。
1.4.1 公有云
公有云通常是指第三方云服务供应商为用户提供的能够使用的云,公有云一般可通过Internet使用。“公有”一词并不代表“免费”,公有云也不表示用户数据可供任何人查看。
公有云的基础设施通常由一个提供云服务的大型运营组织来建立和运维。该运营组织一般是拥有大量计算资源的IT巨头,如Google、Amazon等大型企业。这些IT公司将云计算服务以“按需购买”的方式销售给一般用户或中小企业群体。用户只需将请求提交给云计算系统,付费租用所需的资源和服务。对用户来说,不需要再投入成本建立数据中心,不需要进行系统的维护,就可以专心开发核心的应用服务。Amazon的EC2、Google的GAE等都属于公有云。
公有云是云计算的设计初衷,具有高效灵活和成本优势。用户或企业能够将计算和数据存储外包给云供应商,而不需自己购买设备或投入专业人力来做云系统的维护,还能在计算需求变化时灵活地增减云资源的租用。然而,由于公有云的开放性较高,而用户又失去了对数据和计算的控制权,因此,对于一些敏感和私密的企业数据,企业在租用公有云服务时还存在顾虑。事实上,数据安全问题是公有云普及中最重要的顾虑之一。通常,公有云供应者会对使用者实施使用访问控制机制,如SSL加密。然而IaaS公有云对于一些不太关心隐私的企业来讲,还是具有极大的吸引力。
公有云被认为是云计算的主要形态,在国内的发展如火如荼。根据市场参与者的类型分类,可以分为五类[15]:
1)传统电信基础设施运营商,包括中国移动、中国联通和中国电信。
2)政府主导下的云计算平台,如各地的各种“××云”项目。
3)为互联网巨头打造的公有云平台,如盛大云。
4)部分原IDC运营商经营的云,如世纪互联。
5)具有国外技术背景或引进国外云计算技术的国内企业,如风起亚洲云。
1.4.2 私有云
目前大多数云计算的应用主要局限于对组织内部IT资源的虚拟化和自动化管理。由于所有数据仍旧由组织自己管理,这种云计算模型称为私有云。显然,私有云是一个组织内部的计算资源整合,面向的是内部用户,不提供对外服务。因而私有云能提供对数据安全性和服务质量的最有效控制。
私有云具备许多公有云环境的特点,如弹性和提升资源利用率,两者的差别在于私有云服务中使用自主的网络带宽,安全问题较少;同时,私有云服务的使用者掌握云端基础架构,可以有效地改善其安全与弹性。
私有云可划分为两大类型[16]:一类是外包私有云,也称为场外服务,云位于第三方的服务器端,只能由授权的客户端进行访问;另一类是现场私有云,也称为内部云或场内服务,云由特定的组织进行维护和运行。在安全处所即客户端可以访问云服务,而未经授权的客户端不允许访问。
一般来讲,私有云要求每个组织自己购买硬件设备,建立大型数据中心,投入人力和物力来维护数据中心的正常运转,并且云的规模相对来说比较有限。私有云往往只有大型IT公司才能负担其成本,并在一定的规模效应下享有云计算的优势。私有云还意味着用户连接的是本地资源。尽管它缺乏灵活性且价格昂贵,但是对于某些IT单位如需要处理各种规章制度的组织来说,私有云不可或缺。
由于私有云的开放性不高,其管理是由内部组织进行的。因此私有云通常有较高的安全性,但主要缺点是投资大、维护成本高。
1.4.3 社区云
社区云是指几个有同样应用需求的组织共同组建的云。在这种模式下,社区云的云基础设施由多个组织共同提供和管理。云基础设施由若干个组织分享,以支持某个特定的社区。社区是指有共同诉求和追求的团体。
社区云的规模要大于私有云,多个私有云可通过VPN连接到一起从而组成社区云,以满足多个私有云组织之间整合和安全共享的需求。
与私有云类似,社区云也可以分为场内服务和场外服务两大类别。
1.4.4 混合云
顾名思义,混合云是指云基础设施是由两种或两种以上的云组成,通常是指私有云和公有云的混合体。每种云仍然保持独立,但通过标准的或专用的技术将它们绑定在一起,具有数据和应用程序的可移植性。比如AWS既为企业内部又为外部用户提供云计算服务。
目前,既可以使用私有云服务用于某种目标,又可以使用公有云用于其他目的混合云已成为企业关注的焦点。混合云不仅是一个可定制的解决方案,而且其架构结合了私有云(可信、可控、可靠)和公有云(简单、成本低、灵活)的优势。因此,未来真正被跨国的云服务供应商视为爆发点的应该是混合云市场。
对于采用私有云和公有云组合的混合云来讲,考虑到安全和控制因素,用户通常选择将敏感数据和业务运行在私有云中,将非敏感数据和业务运行在一个或多个公有云中。在这种使用模式下,服务在不同云之间的安全无缝连接较难实现。
混合云的优点是比公有云和私有云更灵活,缺点是需要确定组成混合云的公有云或私有云应该分别使用什么服务。
一般来讲,如银行、金融机构、政府部门和大型企业等多采用混合云。
1.4.5 云计算部署形态
综上所述,云计算的云端架构和三种部署类别之间的关系如图1-15所示。
图1-15 云端架构和三种部署类别之间的关系
1.5 云计算架构
云计算架构描述了一个云平台的总体结构,也被称为云栈。
1.5.1 云计算参考架构
云计算发展至今,尚没有一个统一的标准。目前,已有多家厂商和组织发布了其云计算相关的标准及参考架构。在众多标准和参考架构的交付物中,NIST云计算参考架构中对云计算的概念、属性及架构的定义得到了业界的广泛认同。
NIST云计算参考架构是一个通用的高层架构。它定义了一个可用于云计算架构开发过程的参与者、动作和功能的集合。它包含一组可以用于对云计算特性、使用和标准讨论的观点及描述。其意图是帮助理解云计算的需求、用途、特性和标准。
图1-16是NIST云计算参考模型的概览,定义了云计算中主要的参与者,以及它们的行为和功能[17]。
图1-16 NIST云计算参考架构
1.5.2 云计算实体
由图1-16可知,NIST的云计算参考架构定义了云计算中的5个主要参与者:云消费者、云提供者、云审计者、云代理和云载体。每个参与者(个人或组织)都是参与云计算中事务或流程以及执行任务的一个实体。具体解释如下:
(1)云提供者 云提供者是负责向云消费者提供可用服务的个人、组织或实体。在SaaS层面,云提供者负责安装、管理和维护云基础设施中的软件应用程序;在PaaS层面,云提供者为平台的消费者配置和管理云基础设施和中间件,向其提供开发、部署和管理工具;在IaaS层面,云提供者为IaaS消费者配置和管理计算资源、存储资源、网络资源及宿主环境等云基础设施。
(2)云消费者 云消费者与云提供者维持业务关系,是使用云提供者服务的个人或组织。在SaaS层面,消费者使用应用程序或操作业务流程;在PaaS层面,消费者使用服务或平台开发、部署、测试和管理托管于云平台中的应用程序;在IaaS层面,消费者创建、安装、管理并监控作为IT基础设施操作的服务。
(3)云代理 云代理是一个能够协调云提供者和云消费者两者关系的实体。云代理的目标是提供给云消费者一个更加贴合需求的服务。这可以通过简化及提升服务和契约,集合多重云服务或提供有附加价值的服务器来实现。云代理公司可以被考虑作为一个特殊的云供应商。
(4)云审计者 云审计者是能够对云服务栈的性能和安全性等进行中立评估的机构或实体,并且保证相应的服务水平协议是完整的。细节和审查过程范围一般都在服务契约上有详细说明。
(5)云载体 云载体是云服务提供商向云消费者提供云服务时所使用的连接和传输媒介。
1.5.3 云计算基础框架
传统的IT部署架构是“烟囱式”的,即垂直的体系结构。在这种架构中,每一个IT系统都有自己的存储和IT设备,以及独立的管理工具和数据库,不同的系统之间不能共享资源,不能交付和访问,形成了资源孤岛和信息孤岛。当新的应用系统上线时,需要分析该应用系统的资源需求,确定基础架构所需的计算、存储及网络等设备规格和数量。其不足之处是显而易见的。
云计算的基础架构是在传统基础架构的计算、存储和网络等硬件层的基础上,增加了虚拟化层和云管理层,如图1-17所示。
图1-17 云计算基础架构
虚拟化层(VMs):大多数云基础架构都采用虚拟化技术,包括计算虚拟化、存储虚拟化和网络虚拟化等。通过虚拟化层,屏蔽了低层硬件的差异和复杂度,向上呈现为标准化、可灵活扩展和收缩、弹性的虚拟化资源池。
云管理层(Cloud Manager):对数据中心和底层基础设施进行整合管理。具体来讲,它存在如下三个层面:
1)设备层面。需要实现对大容量设备的管理,同时要考虑物理上分布式部署、逻辑上统一的管理需求。
2)业务层面。需要在同一个平台中实现IP和IT设备的融合,可以从业务的角度对网络进行管理,也可以从性能和流量的角度对业务进行监控和优化。
3)服务层面。需要提供运维服务方面的支持,帮助IT部门向规范化以及可审计的服务运营中心转变。
总之,云管理层实现了对资源池的调度和组合,根据应用系统的需要自动生成和扩展所需的硬件资源,将更多的应用系统通过流程化、自动化部署和管理,提升IT效率。
相对于传统基础架构,云基础架构通过虚拟化整合与自动化,应用系统共享基础架构资源池,实现高利用率、高可用性、低成本及低能耗,并且通过云平台层的自动化管理,实现快速部署、易于扩展和智能管理,帮助用户构建IaaS云业务模式。
1.6 云计算应用实例
这里以游戏产业为例来说明云端服务的各种模式。游戏产业中产值最高的在线游戏,是使用云端服务的典型代表。游戏用户在个人计算机上执行单机版游戏,结束游戏时必须存盘,否则游戏进度就会消失。然而当玩在线游戏时,无论是提升游戏中虚拟人物的等级,还是在社交平台Facebook的网络游戏FarmVille(农场乡村)中偷取上百个好友种植的农作物,都不需执行“保存”操作,原因在于所有数据都存储在游戏营运商自有或租用的服务器里。因此,对游戏使用者而言,游戏供应商所提供的在线游戏服务为SaaS模式。
下面看看制作FarmVille(FarmVille是Zynga公司于2009年6月在Facebook上推出的一款农场模拟游戏)的美国知名网络游戏公司Zynga。如图1-18所示,早期该公司拥有自家的数据中心,然而随着FarmVille的爆红,用户数量急速提升,原有的数据中心无法应付如此庞大的网络流量,促使他们采用IaaS模式,向Amazon租用EC2服务,建立了初步的混合云部署模型。这种云爆发(一种程序部署模式,应用程序一般运行在私有云或数据中心,当遇到计算流量尖峰时,将无法负荷的流量移转到公有云上。利用这种混合云部署,使用者只在需要时支付额外的计算资源)的混合云模式,是时下常见的流量处理方案。目前Zynga的做法,是把新推出的游戏先放在Amazon EC2的租用服务器上,如此只需依照使用量付费,并且应对流量尖峰。然而,一旦游戏正式上线后,Zynga就会将游戏移回自家数据中心的Z Cloud(采用类似Amazon的私有云架构服务器),不过系统还会保留一部份在公有云上。Zynga还向美国的数据中心供应商租用了空间,并在该数据中心安装Z Cloud的服务器及软件。使用多元可弹性的云端服务,可确保该公司得以应付多变的游戏市场。
图1-18 Zynga的云服务所采用模式
1.7 云计算相关技术
云计算是一种以数据为中心的数据密集型计算模式。它是多种分布式计算技术及其商业模式演进的产物。
1.7.1 虚拟化
虚拟化技术由于其在提高基础设施可靠性和提升资源利用效率等方面的巨大优势,其应用领域越来越广泛。特别是新兴起的云计算,更需要虚拟化技术的支撑。
虚拟化技术的起源最早可以追溯到1959年,Strachey发表了一篇名为“Time Sharing in Large Fast Computers”的学术论文[18]。这篇文章被认为是虚拟化技术的最早论述。在此后的十几年,虚拟化技术走进了初始发展阶段。20世纪60年代,IBM为其大型机发明了一种虚拟机监控器技术。20世纪70年代后,IBM、HP和SUN等公司将虚拟化技术引入各自的高端精简指令集服务器和小型计算机中。由于不同厂商的产品和技术不能很好地兼容,虚拟化技术的发展进程有所变慢。1999年,VMware公司提出了一套以虚拟机监控器为中心的软件解决方案。这套方案在全虚拟化模式中使PC服务器平台实现虚拟化。这是x86架构上的第一款虚拟化商用软件。虚拟机技术从此进入个人计算机领域并重新得到快速发展。2003年,采用最新半虚拟化技术实现的开源Xen推出,并在数据中心用户群体中流行开来。Xen的推出使得虚拟化技术的研究和应用更加普及。2005年和2006年,两大CPU生产商Intel和AMD公司对硬件进行修改,分别推出支持硬件虚拟化技术的产品。这项技术改变了x86架构对虚拟化支持的效能,x86架构由此成了虚拟化技术发挥作用的重要平台之一。
随着云计算的兴起,虚拟化技术走进了一个全面鼎盛的时期。虚拟机技术是云计算系统中的核心关键技术。它为所有租户提供了一个可扩展的、共享的资源平台的云计算商业模式。更重要的是,为云计算的其他功能提供了最底层的支持。它是可以将各种计算及存储资源充分整合和高效利用的关键技术。通过虚拟化手段将系统中的各种异构的硬件资源转换为灵活统一的虚拟资源池,从而形成云计算基础设施,为上层云计算平台和云计算服务提供相应的支撑。从企业的角度来看,虚拟化提供了数据中心整合,并且可提高IT运营效率。如今,企业已经以各种形式部署,包括操作系统虚拟化的数据中心内的虚拟化技术、存储虚拟化、数据库虚拟化和应用程序或软件虚拟化等。
但是,虚拟化技术引入了比物理主机更多的安全风险,因为同一物理主机上的虚拟机之间可以不经过防火墙与交换机设备相互访问。因此,使用虚拟技术的云计算平台必须向其客户提供安全性和隔离保证。目前,已经有很多研究者针对虚拟化系统和虚拟化管理的安全问题进行探讨[19]。参考文献[20]中提出了基于嵌套虚拟化技术的可信基构建方法、基于现有硬件特性的安全监控和基于高权限虚拟机的数据隔离机制,为可信云服务提供了新的途径。
虚拟化技术现在最成熟的系统有Xen、VMware及KVM。
1.7.2 分布式编程
高性能计算机的发展促使高效能程序设计环境的产生与发展。然而,基于传统并行编程模型的高效并行程序的编写并不容易。同时,随着领域中数据量的高速增长,传统并行计算编程模型在处理大数据集时也存在性能瓶颈。针对上述两个问题,Google公司研发了一种新的并行编程模型MapReduce。作为一种解决方案,MapReduce计算模型有效地解决了传统算法处理大数据集时的性能瓶颈问题,同时以易使用和易理解的方式简单高效地解决了传统并行计算编程效率不高的问题。
伴随着MapReduce应用范围的扩大,MapReduce的不足越来越明显。很多学者进行了相关的研究,对MapReduce进行了改进。例如,参考文献[21]中提出了改进的MapReduce模型,对Map和Reduce过程进行了优化;参考文献[22]中建立了适应多核的MapReduce并行编程支撑平台HPMR。针对MapReduce计算框架不适合迭代计算和交互式计算,伯克利大学的研究者开发了一个基于内存的计算框架Spark[23]。它将数据尽可能放到内存中以提高迭代应用和交互式应用的计算效率。针对MapReduce不适合进行流式计算和实时分析等,人们开发了实时性要远好于MapReduce的计算框架Storm[24]。
研究者还针对多核、多处理器等不同平台实现了MapReduce模型。比如为了在多核平台上高效地执行程序,斯坦福大学的Ranger等人实现了一个基于多核平台的MapReduce的实现Phoenix[23]。针对GPU,香港科技大学与NVIDIA公司的统一计算设备架构(Compute Unified Device Architecture,CUDA)技术在GPU上实现了一个MapReduce系统Mars[24]。
1.7.3 数据储存
云计算系统底层需要大数据的存储支持,才可以对外提供云存储服务。云存储克服了传统储存系统在容量和性能扩展上存在的瓶颈,以其扩展性强、性价比高及容错性好等优势得到了业界的广泛认同。
为保证用户所存储数据的高可用性和高可靠性,云计算的分布式文件系统多采用冗余的存储方式,即为同一份数据存储多个副本,如Google的GFS和Apache的HDFS都是采用三个副本来保证数据的冗余。这是一个简单有效的方法,但不是最优的方法。针对此问题,研究者一直在探讨能否使用类似的策略在不降低存储可靠性的前提下降低存储副本的数目。比如二代Google分布式文件系统Colossus[25],即GFS2中使用里德-所罗门擦除码来实现成本更低的可靠存储。Microsoft的Azure平台采用擦除码技术来降低存储成本[26]。Facebook公司在开源Hadoop的基础上实现了一套基于擦除码的RAID方案。实验表明,对同样的数据,此方案能够节约25%~30%的HDFS集群的存储空间[27]。
由于云计算对大数据的读操作频率远大于数据的更新频率,因此,云计算的数据管理通常会采用分布式列存储技术。列存储模型最大的特点是方便存储结构化和半结构化数据,方便进行数据压缩,对针对某一列或者某几列的查询应用有着非常大的I/O优势。当前比较典型的基于列储存模型的分布式数据存储系统是Google公司的BigTable和Apache的HBase。
1.7.4 资源调度
关于资源调度方面的研究,大部分都是基于网格计算系统的资源调度策略演变而来的。资源调度[28]的目的是实现作业与资源的优化匹配,把不同的作业以较合理的方式分配到相应的节点去完成。由于分布环境中各节点的运行速度、主机的负载和网络通信的时间等是动态变化的,因此资源调度是一个非常复杂的非确定性多项式(Non-deterministic Polynomial,NP)问题。
1.基于经济学的调度
云计算的商业运营模式,使得其经济因素成为作业调度系统中重点考虑的调度指标。参考文献[29]中首次提出面向市场的云计算体系结构和面向市场的资源分配及调度方法,该体系结构通过资源分配器实现资源使用者与资源提供者之间的协商,来保证资源优化分配。参考文献[30]中提出一种基于市场机制的云资源分配策略,并设计一个基于遗传基因的价格调节算法来处理市场的供需平衡问题。徐保民等人[31]模拟市场经济中有关资源公平分配的原则,提出了一个基于伯格模型的资源公平调度算法。
2.以服务质量为中心的调度
服务质量QoS是衡量用户使用云计算服务的满意程度的标准。研究基于QoS的调度通常以最小完成时间或最优跨度等为目标。目前已有很多基于QoS的研究。比如参考文献[32]中研究了基于可划分负载理论,旨在减少整体作业处理时间的调度问题。针对Hadoop,参考文献[33,34]中根据作业的运行进度和剩余时间动态调整作业获得的资源量,以便作业尽可能地在截止时间内完成。
3.以资源利用率为目标的调度
云计算区别于单机虚拟化技术的重要特征是通过整合物理资源形成资源池,并通过资源管理层实现对资源池中虚拟资源的调度。另外,云计算采用的商业理念及成熟的虚拟化技术使得它的资源管理呈现不同特性。比如参考文献[35]中针对如何分配和迁移虚拟机到物理主机的问题进行研究,提出了一种优化总动态调度时间的资源调度方法。参考文献[36]中从约束的QoS资源分配问题出发引入博弈论,给出了一个公平的资源调度算法。参考文献[37]中对分布式系统,特别是云计算系统,提出了一个利用博弈论进行资源管理的具有较好本地响应时间的算法。
1.7.5 数据中心
基于云的服务需要大量的计算能力,并托管在数据中心和服务器集群。这些分布式数据中心和服务器集群跨越多个地点并可以通过互联网络提供分布式计算和服务交付能力挂钩[38]。
1.数据中心
数据中心是场地出租概念在因特网领域的延伸。它是人类在IT应用推广模式方面的一大发明,标志着IT应用的规范化和组织化。目前,几乎所有大中型机构都建立有自己的数据中心,全面管理本机构的IT系统。数据中心的发展主要经历了如下四个阶段:
(1)数据存储中心阶段 在这一阶段,数据中心承担了数据存储和管理的功能。此阶段,数据中心的主要特征是有助于数据的集中存放和管理,以及单向存储和应用。由于这一阶段的功能较为单一,因此它对整体可用性的需求也较低。
(2)数据处理中心阶段 由于Internet技术的不断普及和应用,数据中心已经可以承担核心计算的功能。因此,这一阶段数据中心开始关注计算效率和运营效率,并且需要安排专业工作人员来进行维护。但是,这一阶段数据中心的整体可用性仍然较低。
(3)数据应用中心阶段 在这一阶段,需求的变化和满足成为其主要特征。随着互联网应用的广泛普及,数据中心承担了核心计算和核心业务运营支撑功能。因此,这一时期的数据中心也称为信息中心,人们对数据中心的可用性有了较高的要求。
(4)数据运营服务中心阶段 在这一阶段,数据中心承担着组织的核心运营支撑、信息资源服务、核心计算,以及数据存储和备份等功能。业务运营对数据中心的要求不仅仅是支持,而是提供持续可靠的服务。这一阶段的数据中心须具有高可用性。
进入21世纪以来,每天都产生海量的计算和存储需求,对于数据中心而言,传统的数据中心架构和服务方式已经逐渐落后于时代需求,用户对安全、高效及节能等方面的要求也越来越迫切。在此背景下,结合云计算技术的云数据中心应运而生。这种新型的数据中心已经不只是一个简单的服务器统一托管和维护的场所,已经衍变成一个集大数据计算和存储为一体的高性能计算机的集结地。各IT厂商将之前以单台为单位的服务器通过各种方式变成多台为群体的模式,在此基础上开发如云存储等一系列的功能,以提高单位数量内服务器的使用效率。
随着云计算和Web 2.0等新业务的兴起,传统的数据中心已经无法满足。业界正掀起新一轮的数据中心建设高潮,新一代的云数据中心随之而产生。
在当前的云计算架构中,云数据中心是云计算硬件架构最底层的独立计算单位。作为一个大型的数据中心,需要处理大量数据,而这些计算机要承担的任务,绝大部分是简单的计算。与此同时,为了控制成本,数据中心的计算机一般并不是高性能的服务器,而是大量的廉价计算机,随之而来的一个问题就是,当我们进行大量计算的时候,如何保证整个数据中心内部的数据交换效率。另外,面向云数据中心的侧重点已由物理架构转向了提供标准化服务。在物理设施和管理层,对内使用良好的调度和平衡方案,大量使用虚拟化技术;对外则屏蔽了下层物理设备,为上层提供标准化的计算和存储资源,根据用户的不同需求,提供不同水平和集成度的服务。
近几年来,国外研究机构纷纷将关注焦点集中在面向云数据中心的架构设计,提出了不少适用于云数据中心的网络拓扑结构。虽然各种结构的基本构建思想有所不同,但构建网络的目的和要求却是一致的[39]。
2.服务器集群
服务器是云计算系统中的基础节点。为了实现云计算的低成本目标,云计算系统中多采用x86服务器,并通过虚拟化提高对服务器资源的利用率。
集群是一种并行或分布式多处理系统,该系统是通过一组松散集成的计算机软件和硬件连接起来作为一个整体向用户提供一组网络资源。在某种意义上,一个连接在一起的计算机集群对于用户和应用程序而言就像一个单一的计算机系统。
集群系统中的单个计算机通常称为节点。节点可以是连接在一起的,也可以是物理上分散而通过局域网连接到一起的。集群计算机通常用来改进单个计算机的计算速度和可靠性。一般情况下集群系统比单个计算机(如工作站)的性价比要高得多。
集群并不是一个全新的概念,早在20世纪60年代,IBM公司就提出了集群计算系统,其基本思想是将大型计算机连接起来通过合理的交互以共同完成某种并行计算。由于当时各种技术的限制,特别是软件和硬件的成本较高,这种思想并不能被很好地商业化。70年代计算机厂商和研究机构开始了对集群系统的研究和开发。由于当时主要用于科学计算,所以这些系统并不为大家所熟知。
直到20世纪80年代,随着高性能低价位的微处理器、高速网络和分布式软硬件工具的发展,集群计算系统才有了得以发展的物质基础。
20世纪90年代以来,昂贵的并行超级计算机向工作站网络转换的趋势越来越强,高性能工作站和网络逐渐的商品化成为促使这种转换的驱动因素。技术的发展使计算机网络成为并行处理的理想工具,从而导致了低价商品化超级计算机的飞速发展,产生了很多典型的系统,如基于Linux和Grendel(系统软件工具包)的PC集群系统Beowulf[1]。
由于低价PC集群和高端大型机相比,具有极其优越的性能价格比和高可扩展性,如今,使用低端工作站和PC进行集群计算的技术逐渐成为研究热点。
根据集群系统的不同特征可以有多种分类方法,但一般把集群系统分为同构与异构两种。它们的区别在于组成集群系统的计算机之间的体系结构是否相同。然而,在实践中,通常将集群分为如下两类:
(1)高可用性集群 高可用性集群通常是指具有两个或多个节点的集群系统,目的是当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上,即仍能继续对外提供服务。高可用性集群的设计思想是要最大限度地减少服务中断的时间。
高可用集群通常有两种工作方式:①容错系统,通常是主从服务器方式,从服务器检测主服务器的状态,当主服务工作正常时,从服务器并不提供服务,但是一旦主服务器失效,从服务器就开始代替主服务器向客户提供服务;②负载均衡系统,集群中所有的节点都处于活动状态,它们分摊系统的工作负载,一般Web服务器集群和数据库集群都属于这种类型。
高可用性集群既适用于提供静态数据的服务,如HTTP服务,又适用于提供动态数据的服务,如数据库等。
计算机系统的可用性是通过系统的可靠性和可维护性来度量的。工程上通常用平均无故障时间来度量系统的可靠性,用平均维修时间来度量系统的可维护性。
(2)高性能计算集群 高性能计算就是研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,分配给多个计算机进行处理,并把这些计算结果综合起来得到最终的结果。
高性能计算机是由多个可同时工作的处理器构成的计算机系统。在一个高性能计算系统中,不同处理器可同时运行同一程序的多个任务或进程,或者同时运行多个独立程序,以提高系统的计算速度、吞吐量或有效地利用系统的资源。
高性能计算集群是指以提高科学计算能力为目的的计算机集群,按照任务间的关联程度,可以分为两种:一种是高吞吐计算,把计算任务分成若干个可以并行的子任务,而且各子任务之间彼此没有什么关联,然后把子任务分配给各节点,在各节点上分别计算后再把从各个计算节点返回的结果进行汇总,生成最终计算结果。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式,所以把这类计算称为高吞吐计算。另一种是并行计算方式,刚好和高吞吐计算相反,虽然也可以将计算任务分成若干并行的子任务,但子任务之间联系紧密,节点之间在计算过程中需要大量的数据交换,可以进行具有强耦合关系的计算。
云计算本身意味着超大的数据处理量,只有高性能计算才能有效发挥其商业模式的优势;另外,云计算是高性能计算在发展过程中呈现的必然特征。随着高性能计算应用市场的不断深入,以及向其他行业、领域的不断扩展,数据量增长已达到前所未有的速度,更多的工作也将从传统的基于本地的集群计算向基于网络的集群计算发展,这在客观上有赖于云计算的发展成果。
云计算所涉及的技术很多,这里仅对云计算的部分核心技术进行了简单阐述。需要指出的是,虽然云计算是发展趋势所在,但现在对云计算基础关键技术的研究还远远不够,业界过于偏重虚拟化技术,而忽视了对计算机系统技术的研究。
3.节能技术
在云计算环境中,数据中心是云计算硬件架构底层的独立计算单位。数据中心的基础设施通常由数以万计的计算机构成,随之而来的一个亟待解决的问题是数据中心巨大的能源消耗。据统计,2010年数据中心能耗已经占全球总能耗的1.3%,绿色化刻不容缓。
针对上述问题,国内外学者及相关机构已经对诸多节能技术进行研究,并提出了很多降低能耗的方法。
(1)组件级的节能 目前对于计算机系统组件的设计追求的目标是使得这些组件能够按使用率成比例地消耗能源,即存储系统中的缓存、内存以及硬盘等没有使用的部分是不消耗或只消耗很少的能量。组件级的节能主要包括CPU组件节能和存储组件节能两种形式。早期解决服务器级能耗问题的主流技术是动态电压和频率缩放(DVFS)方法。其核心思想是通过动态调整CPU的电压和频率,使其能动态适应负载的变化,进而实现节能。基于DVFS的节能技术都是利用物理机CPU的空闲时间来降低能耗。对于云数据中心,人们对共处一个物理机内虚拟机的能耗更加感兴趣。显然,基于DVFS的节能技术不能直接应用于引入虚拟化技术的云数据中心[40]。
(2)服务器整合 通过虚拟化技术进行节能已有一些早期的研究。研究方法主要是通过虚拟技术如虚拟机动态迁移机制进行服务器整合,使一些物理机处于空闲状态,然后通过使其处于休眠或关机状态,达到节能效果。比如Vogels[41]和Nathuji等人[42]从能耗的观点出发,探索使用虚拟化进行服务器整合的优点。更进一步,一些研究者对采用虚拟化技术的集群系统如何通过动态配置方法进行能耗优化而进行了研究。比如Petrucci等人[43]针对虚拟化集群,提出了一个考虑关停资源代价、采用服务器整合策略实现节能的算法;Kusic等人[44]提出基于有限先行控制优化策略来指导服务器整合。
(3)数据副本管理 MapReduce的开源实现Hadoop的分布文件系统(HDFS)默认地对每个数据项保持三个副本。三个副本意味着300%的高昂设备运营费用。这种典型的超额配置保证在资源需求高峰期间能维持数据的可用性。斯坦福大学的Leverich等人[45]的研究表明:通过改变数据副本放置策略可以有效节省系统能耗。例如Amur等人[46]针对MapReduce集群提出了一个将数据项以倾斜方式放置数据副本的策略,这样就有可能通过关闭不含数据项的部分节点以实现节能。Pinheiro等人[47]通过把原始数据和冗余数据分开存放到不同节点上达到节能目的。参考文献[48]中提出了一个基于超图的副本存储优化节能算法。另外,不同的数据副本放置策略会对系统性能产生一定影响。比如Vasic等人[49]通过修改Hadoop的任务调度和数据块分配算法,使得任务调度与数据副本位置能相互感知,进而达到节能效果。
(4)节点启动与关闭 与数据副本管理策略和服务器整合技术紧密相关的另一关键技术是节点启动与关闭策略。Goiri等人[50]的研究表明:通过减少在线节点数量可以实现节点数量与能耗之间的最佳折中。目前,关于节点管理策略的研究思路主要是采用机器学习等理论进行决策,使不常用的节点处于低能耗或关闭状态来节能。例如Kamitsos等人[51]采用基于Bellman方法决策何时让一些节点进入睡眠状态来节能,Berral等人[52]提出了一个能量感知的节点启停算法。该算法在保证最大性能的前提下,利用系统行为信息和学习模型预测系统能耗量及CPU负载,进而改进任务调度决策。Berral等人[53]提出从资源、能耗和负载行为中直接学习的机器学习方法进行能耗管理和自适应的任务调度。针对MapReduce集群,Cardosa等人[54]指出通过动态重定位虚拟机,使在线节点数量保持最小,即使空闲节点最多,也可以使空闲节点处于不活动状态而达到节能。
1.7.6 应用编程接口
应用程序编程接口(API)具有不同的表现形式,可以是简单的URL操作,也可以是复杂的类似SOA的编程模型。API的发展有助于开发云计算的潜力和隐藏扩展现存IT管理程序及云服务方面的复杂操作。比如,通过IaaS云服务供应商Amazon EC2提供的API,用户可以方便地创建和管理云资源。所有的XaaS开发人员,都需要熟悉特定云平台的API来部署和管理软件模块到XaaS平台。
如今,云用户所面临的关键挑战之一是每个云服务供应商都有自己的一套API。其结果是,在不同云平台之间进行云应用移植存在一定的困难,并且这些程序很难进行互操作。因此,制订统一的标准化云API规范是云标准化组织当下所面临的具有挑战性的工作之一[55]。
1.7.7 云计算安全
伴随着云计算的快速发展,越来越多的企业或个人将数据托管到云端。但是云计算所具有的如虚拟化和可伸缩等特性使得传统的安全技术无法完全保证用户托管到云端中数据的安全,安全事件屡见不鲜,导致很多人抱着观望和谨慎的态度看待云计算。目前,云计算的安全问题已成为推广云计算的障碍之一。
针对云计算面临的安全挑战,国内外研究者对云计算安全的一些关键技术进行了相关研究。这些研究主要集中在以下几方面[13]:①加密数据处理。用户数据应以密文形式存储在云端中,如果能够直接在密文上进行计算,则有利于保证数据安全和用户隐私。目前关于密文处理的研究主要集中在基于密文的检索与处理。比如,2009年IBM研究员开发了一种全同态加密方案,使得云应用在不解密数据的状态下处理数据[56]。若该技术进入实施阶段,就可以解决云中数据在整个生命周期内的加密问题。再如微软公司于2009提出的Cryptographic Cloud Storage[57]中实现了基于密文的检索、基于属性的加密机制和数据持有性证明等技术。②数据隐私保护。云中数据隐私保护涉及数据的整个生命周期。参考文献[58]在云中数据的生成与计算阶段引入集中信息流控制和差分隐私保护技术,防止计算过程中非授权的隐私数据被泄露,并支持对计算结果的自动解密。参考文献[59]针对云中数据的存储和使用阶段,提出一种基于客户端的隐私管理工具来支持用户控制自己的敏感信息在云端的存储和使用③可信云计算。将可信计算技术引入云计算,以可信赖方式向用户提供云服务是云计算发展的必然趋势。参考文献[60]中提出了一个可信云计算平台。通过此平台可以为用户提供一个密闭的箱式执行环境,确保用户虚拟机运行的安全性。Sadeghi等人[61]认为可信计算技术可以解决外包数据的机密性和完整性问题。沈昌祥院士认为引入可信根和信任传递概念到可信云计算框架,可实现对云服务的完整性度量和验证[62]。因此,将可信计算与云计算相结合,能实现云计算对恶意代码的“免疫”,为系统运行提供基础可信环境,确保各项安全机制的正确实施。④云安全体系与技术框架。参考文献[63]中提出了一种结合公钥基础设施、轻量目录访问协议和单点登录等技术的云计算解决方案。该方案引入可信的第三方提供安全认证,并根据云计算系统分层的特性,分别给物理层、基础设施即服务、平台即服务、软件即服务提供安全认证。冯登国等人[55]提出一个包含云计算服务体系、云计算安全标准及测评体系两大部分的云计算安全框架。这个框架可以为用户的安全目标提供技术支撑。
整体上来讲,关于云计算安全问题的研究刚刚起步,虽然很多的组织和机构都在积极地对云计算的安全问题进行分析和研究,但主要是CSA以及微软、谷歌等组织与机构所给出的对云计算安全问题的描述和关于云计算安全问题的初步解决方案。比如微软为云平台Azure配置一种称为“Sydney”的安全计划,帮助用户在服务器和Azure云之间交换数据,以解决虚拟化带来的安全问题。
参考文献
[1] 王映辉,王英杰.计算模式的演变与大规模软件构架技术[J].计算机工程与应用,2003,30(29):51-53.
[2] 维基百科.ENIAC[J/OL].http://en.wikipedia.org/wiki/ENIAC.
[3] 维基百科.IBM Personal Computer[J/OL].https://en.wikipedia.org/wiki/IBM_Personal_Computer.
[4] 百度百科.C/S结构[J/OL].http://baike.baidu.com/view/268856.htm?fromId=45170.
[5] 维基百科.WWW[J/OL].http://zh.wikipedia.org/wiki/WWW.
[6] 百度百科.B/S结构[J/OL].http://baike.baidu.com/view/268862.htm.
[7] Li C L,Lu Z D,Li L Y.Design and implementation of a distributed computing environment model for object-orient networks programming[J].Computer Communications,2002,25(5):516-521.
[8] IBM.Google and IBM announced university initiative to address internet-scale computing challenges[J/OL].http://www-03.ibm.com/press/us/en/pressrelease/22414.wss,Oct.8,2007.
[9] Mell P,Grance T.The NIST definition of cloud computing[M].National Institute of Standards and Technology,Information Technology Laboratory,2009.
[10] 云计算的优势[J/OL].http://www.rackspace.com/cn/云计算/551q/优势.
[11] 林姿华.全世界漫步在云端——浅谈科技新知识云端计算[J/OL].http://www.nhu.edu.tw/~society/e-j/86/13.htm.
[12] 云计算发展史[J/OL].http://www.360doc.com/content/14/0910/15/17799864_408413957.shtml.
[13] Mather T,Subra K,Shahed L.Cloud Security and Privacy:An Enterprise Perspective on Risks and Compliance[M].Sebastopol:O'Reilly Media,Inc,2009.
[14] 百度百科.PaaS[J/OL].http://baike.baidu.com/view/1413359.htm.
[15] 百度百科.公有云[J/OL].http://baike.baidu.com/link?url=FTgm2A1Vln2JANT0woD7Tcoif3q4dw_Ovp2XRFdvCMufcwnhgjj2W3fLPAbDGfeZMf-yiYHZqA3sm6PnlLwBZa.
[16] Singh B N.Cloud deployment models-private,community,public,hybrid with examples[J/OL].http://www.technopulse.com/2011/10/cloud-deployment-private-public-example.html.
[17] NIST cloud computing standards roadmap[J/OL].http://www.nist.gov/itl/cloud/upload/NIST_SP-500-291_Version-2_2013_June18_FINAL.pdf.
[18] Strachey C.Time sharing in large fast computers[C].International Conference on Information Processing.Paris,1959:336-341.
[19] Zhang F,Chen J,Chen H,et al.CloudVisor:Retrofitting protection of virtual machines in multi-tenant cloud with nested virtualization[C].Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles,Cascais:ACM,2011:203-216.
[20] Luo S,Lin Z,Chen X,et al.Virtualization security for cloud computing service[C].International Conference on Cloud and Service Computing,Hong Kong,2011:174-179.
[21] 周锋,李旭伟.一种改进的MapReduce并行编程模型[J].科协论坛,2009,2(11):11-12.
[22] 郑启龙,王昊,吴晓伟,等.HPMR:多核集群上的高性能计算支撑平台[J].微电子学与计算,2008,25(9):21-23.
[23] Ranger C,Raghuraman R,Penmetsa A,et al.Evaluating mapReduce for multi-core and multiprocessor systems[C].IEEE 13th International Symposium on High Performance Computer Architecture,Scottsdale,2007:13-24.
[24] He B,Fang W,Luo Q,et al.Mars:A mapReduce framework on graphics processors[C].17th International Conference on Parallel Architectures and Compilation Techniques,Toronto,2008:260-269.
[25] Schneider D,Quentin H.Under the hood at google and facebook[J].IEEE Spectrum,2011,48(6):63-67.
[26] Huang C,Simitci H,Xu Y,et al.Erasure coding in windows azure storage[C].USENIX Annual Technical Conference,Boston,2012:15-26.
[27] Sathiamoorthy M,Asteris M,Papailiopoulos D,et al.Xoring elephants:Novel erasure codes for big data[C].VLDB Endowment,2013,6(5):325-336.
[28] Xu B,Wang N,Li C.A cloud computing infrastructure on heterogeneous computing resources[J].Journal of Computers,2011,6(8):1789-1796.
[29] Buyya R,Yeo C S,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.
[30] You X,Xu X,Wan J,et al.RAS-M:Resource allocation strategy based on market mechanism in cloud computing[C].Fourth ChinaGrid Annual Conference,YanTai,2009:256-263.
[31] Xu B,Zhao C,Hu E,et al.Job scheduling algorithm based on berger model in cloud environment[J].Advances in Engineering Software,2011,42(7):419-425.
[32] Abdullah M,Othman M.Cost-based multi-QoS job scheduling using divisible load theory in cloud computing[C].Procedia Computer Science,2013,18:928-935.
[33] Polo J,Carrera D,Becerra Y,et al.Performance-driven task co-scheduling for MapReduce environments[C].Network Operations and Management Symposium,Osaka,2010:373-380.
[34] Kc K,Anyanwu K.Scheduling hadoop jobs to meet deadlines[C].IEEE International Conference on Cloud Computing Technology and Science,Washington:IEEE Computer Society,2010:388-392.
[35] Hermenier F,Lorca X,Menaud J M,et al.Entropy:A consolidation manager for cluster[C].The International Conferenceon Virtual Execution Environments,Washington,2009:41-50.
[36] Wei G,Vasilakos A V,Zheng Y,et al.A game-theoretic method of fair resource allocation for cloud computing services[J].The Journal of Supercomputing,2010,54(2):252-269.
[37] Londoño J,Bestavros A,Teng S H.Collocation games and their application to distributed resource management[J/OL].http://www.cs.bu.edu/techreports/pdf/2009-002-collocation-games.pdf,Technical Report,2009.
[38] 数据中心[J/OL].http://baike.baidu.com/link?url=TGn8ULcMuBzrawRK8WANgH5C6s MD3f0L4Mjc_0ImXdn951 pCQCxxeIHrcdLgW0zWBCAlpzivMMus94t9D_uPcq.
[39] 云数据中心网络架构需具备的五大特性[J/OL].http://www.cioage.com/art/201306/102300.htm.
[40] Wang Y,Deaver R,Wang X.Virtual batching:Request batching for energy conservation in virtualized servers[C].18th International Workshop on Quality of Service,Beijing,2010:1-9.
[41] Vogels W.Beyond server consolidation[J].ACM Queue,2008,6(1):20-26.
[42] Nathuji R,Schwan K,Somani A,et al.VPM tokens:Virtual machine-aware power budgeting in datacenters[J].Cluster Computing,2009,12(2):189-203.
[43] Petrucci V,Loques O,Mossé D.A dynamic configuration model for power-efficient virtualized server clusters[C].11th Brazillian Workshop on Real-Time and Embedded Systems,Recife,2009,2:35-44.
[44] Kusic D,Kephart J O,Hanson J E,et al.Power and performance management of virtualized computing environments via lookahead control[J].Cluster Computing,2009,12(1):1-15.
[45] Leverich J,Kozyrakis C.On the energy(in)efficiency of hadoop clusters[J].ACM SIGOPS Operating Systems Review,2010,44(1):61-65.
[46] Amur H,Cipar J,Gupta V,et al.Robust and flexible power-proportional storage[C].1st ACM Symposium on Cloud Computing,Indianapolis,2010:217-228.
[47] Pinheiro E,Bianchini R,Dubnicki C.Exploiting redundancy to conserve energy in storagesystems[J].In ACM SIGMETRICS Performance Evaluation Review,2006,34(1):15-26.
[48] Chen X,Xu B.Storage optimization for energy-saving based on hypergraph in cloud data center[J].International Journal of Database Theory and Application,2015,8(4):291-297.
[49] Vasić N,Barisits M,Salzgeber V,et al.Making cluster applications energy-aware[C].1st workshop on Automated control for datacenters and clouds,Barcelona,2009:37-42.
[50] Goiri I,Julia F,Nou R,et al.Energy-aware scheduling in virtualized datacenters[C].International Conference on Cluster Computing,Heraklion,2010:58-67.
[51] Kamitsos I,Andrew L,Kim H,et al.Optimal sleep patterns for serving delay-tolerant jobs[C].1st International Conference on Energy-Efficient Computing and Networking,Passau,2010:31-40.
[52] Berral J L,Goiri Í,Nou R,et al.Towards energy-aware scheduling in data centers using machine learning[C].1st International Conference on energy-Efficient Computing and Networking,Passau,2010:215-224.
[53] Berral J L,Gavalda R,Torres J.Adaptive scheduling on power-aware managed data-centers using machine learning[C].12th International Conference on Grid Computing,Lyon,2011:66-73.
[54] Cardosa M,Singh A,Pucha H,et al.Chandra.Exploiting spatio-temporal tradeoffs for energy efficient MapReduce in the cloud[R].Technical ReportTR10-008,University of Minnesota,2010.
[55] 冯登国,张敏,张妍,等.云计算安全研究[J].软件学报,2011,22(1):71-83.
[56] Gentry C.Fully homomorphic encryption using ideal lattices[C].Int’l Symp.on Theory of Computing,New York,2009:169-178.
[57] Kamara S,Lauter K.Cryptographic cloud storage[C].14th Int’l Conf.on Financial Cryptograpy and Data Security,Berlin,2010:136-149.
[58] Roy I,Setty S T,Kilzer A,et al.Airavat:Security and privacy for MapReduce[C].7th Usenix Symp.on Networked Systems Design and Implementation,San Jose,2010:297-312.
[59] Bowers K D,Juels A,Oprea A.Proofs of retrievability:Theory and implementation[C].The ACM Workshop on Cloud Computing Security,New York,2009:43-54.
[60] Santos N,Gummadi K P,Rodrigues R.Towards trusted cloud computing[C].Proc.of the2009 Conference on Hot Topics in Cloud Computing,San Diego,2009:3-3.
[61] Sadeghi A R,Schneider T,Winandy M.Token-based cloud computing:Secure outsourcing of data and arbitrary computations with lower latency[C].lth Conf.on Trust and Trustworthy Computing,Berlin Heidelberg,2010:417-429.
[62] 杨立博.云计算安全框架的分析[J].中国科技纵橫,2014(5):45.
[63] Zissis D,Lekkas D.Addressing cloud computing security issues[J].Future Generation Computer Systems,2012,28(3):583-592.