云计算技术研究现状综述
2009-10-26李艳华
李艳华
摘要:”云应用”使用大规模的数据中心以及功能强劲的服务器来运行网络应用程序与网络服务。任何一个用户通过合适的互联网接入设备以及一个标准的浏览器都能够访问一个云计算应用程序。当前,工业界已经有很多公司聚集在云计算这样一个新型计算概念下面,分别提出了自己针对云计算的理解,用不同的技术来实现上述目标。
关键词:云计算;应用;发展
1 简介
所谓的云计算可以被看成是网格计算和虚拟化技术的融合:即利用网格分布式计算处理的能力,将IT资源构筑成一个资源池,再加上成熟的服务器虚拟化、存储虚拟化技术,以便用户可以实时地监控和调配资源。
云计算更多的是指,通过千万台互联的电脑和服务器进行大量数据运算,为搜索引擎、金融行业建模、医药模拟等应用提供超级计算能力。这种云计算是为IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池来为整个网络提供服务。
简言之,云计算是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云—一个浪漫的比喻—用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。“云计算”与传统以电脑为中心的计算模式相区别,它将计算和数据分布在大量的分布式计算机上,人们通过手机、电脑上网后就能检索到。
从IBM的定义中我们看到,云计算的含义有两个方面。它一方面描述了一种方便的基础设施,用来构造应用程序,其地位相当于PC机上的操作系统; 另外一方面则描述了建立在这种基础设施之上的云计算应用。一个计算云是虚拟化的计算资源池,用来容纳各种不同的工作模式,并且这些工作模式可以通过快速部署的方式部署到物理设施上。由于使用了分布式的计算技术,云计算能够将计算扩展到更多的计算资源,以及使用冗余的资源进行容错处理。
2 云计算:工业界观点
在应用方面,云计算描述了一种可以通过互联网进行访问的可扩展的应用程序。在IBM的白皮书中我们还可以看到,云计算能够通过快速提供物理以及虚拟服务器来支持网格应用的运行。网格程序能够将一个大的任务分解成很多小的任务并行地运行在不同的集群以及服务器上。我们可以把云计算看做是一个具有更广泛含义的计算平台,除了能够支持网格的应用之外,云计算还能够支持非网格的应用,例如在网络服务程序中的网络服务器、应用服务器和数据库服务器三层应用程序架构模式。特别值得注意的是云计算模型支持当前Web 2.0模式的网络应用程序。云计算是能够提供动态资源池、虚拟化和高可用性的下一代计算平台
云计算被视为科技业的下一次革命,它将带来工作方式和商业模式的根本性改变。 首先,对中小企业和创业者来说,云计算意味着巨大的商业机遇,他们可以借助云计算在更高的层面上和大企业竞争。自1989年微软推出Office办公软件以来,我们的工作方式已经发生了极大变化,而云计算则带来了云端的办公室——更强的计算能力但无须购买软件,省却本地安装和维护。
其次,从某种意义上说,云计算意味着硬件之死。至少,那些对计算需求量越来越大的中小企业,不再试图去买价格高昂的硬件,而是从云计算供应商那里租用计算能力。在避免了硬件投资的同时,公司的技术部门也无须为忙乱不堪的技术维护而头痛,节省下来的时间可以进行更多的业务创新。
云计算对商业模式的影响体现在对市场空间的创新上。哈佛商学院教授克里斯滕森认为,Google Apps是他关于创新的理论中的新市场创新。他在接受一家中国商业媒体采访时说:“我在哈佛商学院的学生做文字处理时用Google Docs,他们将文件存储在Google的服务器上,而不是自己的电脑上。这是一个典型的新市场破坏,当互联网变得越来越快和更可依赖,用户正从桌面电脑上的软件应用转向基于互联网的应用。”
同时,云计算开发新产品拓展新市场的成本非常低。比如,如果用户对Gmail的需求突然出现猛增,谷歌的云计算系统会自动为Gmail增加容量和处理器的数量,无需人工干预,而且增加和调整都不增加成本。依赖云计算,谷歌能以几乎可以忽略不计的成本增加新的服务。如果新增的服务失败了,那没关系,关掉并且忘掉它就可以。如果成功了,系统会自动为它增加空间和处理能力。
2.1 相关产品及介绍
Google的搜索引擎,生产力程序是云计算初期的产品,但它们主要是在大型计算机服务器集群上完成的,而不是普通的台式机。微软已经公布了Windows Lives网络软件,它包括相片分享,文件存储等,它也是建立在数据中心之上的。雅虎也有类似的动作。
从2003年开始,Google连续几年在计算机系统研究领域的最顶级会议与杂志上发表论文,揭示其内部的分布式数据处理方法,向外界展示其使用的云计算核心技术。从其近几年发表的论文来看,Google使用的云计算基础架构模式包括四个相互独立又紧密结合在一起的系统。包括Google建立在集群之上的文件系统 Google File System,针对Google应用程序的特点提出的Map/Reduce编程模式,分布式的锁机制Chubby以及Google开发的模型简化的大规模分布式数据库BigTable。
2.1.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一致性模型的要求,这样不用加重应用程序的负担,就大大简化了文件系统的设计。还引入了原子性的追加操作,这样多个客户端同时进行追加的时候,就不需要额外的同步操作了。
总之,GFS是为Google应用程序本身而设计的。据称,Google已经部署了许多GFS集群。有的集群拥有超过1000个存储节点,超过300T的硬盘空间,被不同机器上的数百个客户端连续不断地频繁访问着。