1.2 云计算概述
在中国大数据专家委员会成立大会上,委员会主任怀进鹏院士用一个公式描述了大数据与云计算的关系:G=f(x)。其中,x是大数据,f是云计算,G是我们的目标。也就是说,云计算是处理大数据的手段,大数据与云计算是一枚硬币的正反面。大数据是需求,云计算是手段。没有大数据,就不需要云计算。没有云计算,就无法处理大数据。
事实上,云计算比大数据“成名”要早。2006年8月9日,Google首席执行官埃里克·施密特在搜索引擎大会上首次提出了云计算的概念,并说Google自1998年创办以来,就一直采用这种新型的计算方式。
那么,什么是云计算?本书主编刘鹏对云计算给出了长、短两种定义。长定义是:“云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。”短定义是:“云计算指通过网络按需提供可动态伸缩的廉价计算服务。”
上述提到的资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常是一些大型服务器集群,包括计算服务器、存储服务器和宽带资源等。云计算将计算资源集中起来,并通过专门软件实现自动管理,无须人为参与。用户可以动态申请部分资源,支持各种应用程序的运转。用户无须为烦琐的细节烦恼,能够更加专注于自己的业务,有利于提高效率、降低成本和技术创新。云计算的核心理念是资源池,这与早在2002年就提出的网格计算池(Computing Pool)的概念非常相似。网格计算池将计算和存储资源虚拟成一个可以任意组合分配的集合,池的规模可以动态扩展,分配给用户的处理能力可以动态回收重用。这种模式能够大大提高资源的利用率,提升平台的服务质量。
之所以称为“云”,是因为它在某些方面具有现实中云的特征:云一般都较大;云的规模可以动态伸缩,它的边界是模糊的;云在空中飘忽不定,无须也无法确定它的具体位置,但它确实存在于某处。还因为云计算的鼻祖之一Amazon将大家曾经称为网格计算的东西,取了一个新名称“弹性计算云”(Elastic Computing Cloud),并取得了商业上的成功。
有人将这种模式比喻为从单台发电机供电模式转向了电厂集中供电模式。它意味着计算能力也可以作为一种商品进行流通,就像天然气、自来水和电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。
云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、将基础设施作为服务(Infrastructure as a Service,IaaS)、将平台作为服务(Platform as a Service,PaaS)和将软件作为服务(Software as a Service,SaaS)等概念混合演进并跃升的结果。
从研究现状看,云计算具有以下特点。
(1)超大规模。“云”具有相当的规模,Google、Amazon、阿里巴巴、百度和腾讯等公司的“云”均拥有超过百万台的服务器。“云”能赋予用户前所未有的计算能力。
(2)虚拟化。云计算支持用户在任意位置、使用各种终端获取服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无须了解应用运行的具体位置,只需要一台计算机、PAD或手机,就可以通过网络服务获取各种服务。
(3)高可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机更加可靠。
(4)通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一片“云”可以同时支撑不同的应用运行。
(5)高可伸缩性。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
(6)按需服务。“云”是一个庞大的资源池,用户按需购买,像自来水、电和天然气那样计费。
(7)廉价。“云”的特殊容错措施使我们可以采用廉价的节点来构成云;“云”的自动化管理使数据中心的管理成本大幅降低;“云”的公用性和通用性使资源的利用率大幅提高;“云”设施可以建在电力资源丰富的地区,从而大幅降低能源成本。因此“云”具有前所未有的性价比。
云计算按照服务类型大致可以分为三类:IaaS、PaaS和SaaS,如图1-3所示。
IaaS将硬件设备等基础资源封装成服务供用户使用,如Amazon云计算AWS(Amazon Web Services)的弹性计算云EC2和简单存储服务S3。在IaaS环境中,用户相当于在使用裸机和磁盘,既可以让它运行Windows,也可以让它运行Linux,几乎可以做任何想做的事情。IaaS最大的优势在于它允许用户动态申请或释放节点,按使用量计费。运行IaaS的服务器规模达到几十万台之多,所以用户可以认为能够申请的资源几乎是无限的。同时,IaaS是由公众共享的,因而具有更高的资源使用效率。
图1-3 云计算的服务类型
PaaS对资源的抽象层次更进一步,它提供用户应用程序的运行环境,典型的如Google App Engine。PaaS自身负责资源的动态扩展和容错管理,用户应用程序不必过多考虑节点间的配合问题。但与此同时,用户的自主权减弱,必须使用特定的编程环境并遵照特定的编程模型。这有点像在高性能集群计算机里进行MPI编程,只适用于解决某些特定的计算问题。例如,Google App Engine只允许使用Python和Java语言,基于称为Django的Web应用框架,调用Google App Engine SDK来开发在线应用服务。
SaaS的针对性更强,它将某些特定应用软件功能封装成服务,如Salesforce公司提供的在线客户关系管理(Client Relationship Management,CRM)服务。SaaS既不像PaaS一样提供计算或存储资源类型的服务,也不像IaaS一样提供运行用户自定义应用程序的环境,它只提供某些专门用途的服务供应用调用。
需要指出的是,随着云计算的深化发展,不同云计算解决方案之间相互渗透融合,同一种产品往往横跨两种以上的类型。
在这里,还需要阐述一下云安全与云计算的关系。作为云计算技术的一个分支,云安全技术通过大量客户端的参与来采集异常代码(病毒和木马等),并汇总到云计算平台上进行大规模的统计分析,从而准确识别和过滤有害代码。这种技术由中国率先提出,并取得了巨大成功,自此计算机的安全问题得到有效控制,用户告别了被病毒或木马搞得焦头烂额的日子。360安全卫士、瑞星、趋势、卡巴斯基、McAfee、Symantec、江民、Panda、金山等均推出了云安全解决方案。值得一提的是,云安全的核心思想,与本书主编刘鹏早在2003年提出的反垃圾邮件网格技术完全一致。该技术被IEEE Cluster 2003国际会议评为杰出网格项目,在香港的现场演示非常轰动,并被国内代表性的电子邮件服务商大规模采用,从而使我国的垃圾邮件过滤水平处于世界领先水平。