1.1 云计算概述
云计算的出现并非偶然,早在20世纪60年代,麦卡锡就提出了把计算能力作为像水和电一样的公用事业提供给用户的理念,这成为云计算思想的起源。在20世纪80年代网格计算、90年代公用计算,21世纪初虚拟化技术、面向服务的体系结构(Service-Oriented Architecture,SOA)、软件即服务(Software as a Service,SaaS)应用的支撑下,云计算作为一种新兴的资源使用和交付模式逐渐为学界和产业界所认知。继个人计算机变革、互联网变革之后,云计算被看作第三次IT浪潮。
云计算是指IT资源的交付和使用模式,通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。典型的云计算提供商往往提供通用的网络业务应用,可以通过浏览器等软件或者其他Web服务来访问,而软件和数据都存储在远程数据中心的服务器上。用户通过计算机、手机等方式接入数据中心,按自己的需求进行运算。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取、按需使用、随时扩展、按使用付费。
1.1.1 云计算的思想起源
在传统计算模式下,企业建立一套IT系统不仅仅需要购买硬件等基础设施,还需要购买软件的许可证,需要专门的人员维护。当企业的规模扩大时还要继续升级各种软硬件设施以满足需要。对于企业来说,计算机等硬件和软件本身并非他们真正需要的,它们仅仅是完成工作、提供效率的工具而已。对个人来说,如果想正常使用计算机就需要安装多种软件,而许多软件是收费的,对不经常使用该软件的用户来说购买是非常不划算的。可不可以有这样的服务,能够提供我们需要的所有软件供我们租用?这样我们只需要在使用时支付少量“租金”即可“租用”到这些软件服务,为我们节省许多购买软硬件的资金。
我们每天都要用电,但不是每家自备发电机,而是由电厂集中提供;我们每天都要用自来水,但不是每家都需要有水井,它由自来水厂集中提供。这种模式极大地节约了资源,方便了我们的生活。面对计算机给我们带来的困扰,我们可不可以像使用水和电一样使用计算机资源?这些想法最终导致了云计算的产生。
云计算的最终目标是将计算、服务和应用作为一种公共设施提供给公众,使人们能够像使用水、电、煤气和电话那样使用计算机资源。
云计算模式即为电厂集中供电模式。在云计算模式下,用户的计算机会变得十分简单,或许不大的内存、不需要硬盘和各种应用软件,就可以满足我们的需求,因为用户的计算机除了通过浏览器给“云”发送指令和接收数据外基本上什么都不用做,便可以使用云服务提供商的计算资源、存储空间和各种应用软件。这就像连接“显示器”和“主机”的电线无限长,从而可以把显示器放在使用者的面前,而主机放在远到甚至计算机使用者本人也不知道的地方。云计算把连接“显示器”和“主机”的电线变成了网络,把“主机”变成云服务提供商的服务器集群。
在云计算环境下,用户的使用观念也会发生彻底的变化,从“购买产品”到“购买服务”转变,因为他们直接面对的将不再是复杂的硬件和软件,而是最终的服务。用户不需要拥有看得见、摸得着的硬件设施,也不需要为机房支付设备供电、空调制冷、专人维护等费用,并且不需要等待漫长的供货周期、项目实施等冗长的时间,只需要向云计算服务提供商支付一定的费用,我就可以马上得到需要的服务。
1.1.2 云计算的定义
云计算的概念自提出之日起就一直处于不断的发展变化中,很多机构和学者对云计算进行了解读,但没有形成公认的定义。本节列出几个典型的定义,使读者从多个角度了解云计算的含义。
(1)维基百科给出的云计算的定义:云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备。云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。
(2)百度百科给出的云计算的定义:云计算是分布式计算技术的一种,其最基本的概念,是通过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。通过这项技术,网络服务提供者可以在数秒之内,处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。
(3)IBM认为云计算是一种革新的信息技术与商业服务的消费与交付模式。在这种模式中,用户可以采用按需的自助模式,通过访问无处不在的网络获得任何地方资源池中被快速分配的资源,并按实际使用情况进行付费。
(4)Salesforce.com认为云计算就是一种更友好的业务运行模式。在这种模式中,用户的应用程序运行在共享的数据中心,用户只需要通过登录和个性化定制就可以使用这些数据中的应用程序。
(5)美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)对云计算的定义:云计算是一种无处不在、便捷且按需对一个共享的可配置计算资源(包括网络、服务器、存储、应用和服务)进行网络访问的模式,它能够通过最少量的管理以及与服务提供商的互动实现计算资源的迅速供给和释放。该定义是目前较为公认的云计算的定义。
图1.1形象地描述了云计算的定义。云端的计算资源池包含了服务器、计算机桌面、软件平台、软件应用和存储/数据等计算资源。用户可以使用台式计算机、笔记本电脑、智能手机、平板电脑等终端设备联网获取云端的计算资源。
图1.1 云计算的定义
按照NIST对云计算的定义,自助式服务、随时随地使用、可度量的服务、快速资源扩缩和资源池化是云计算的基本特征,如图1.2所示。
图1.2 云计算的基本特征
(1)自助式服务:使用云计算的用户大多是通过自助方式获取资源的。例如,当使用Amazon的EC2云服务时,用户可以自助选择服务器的操作系统类型、服务器的配置(micro、small、large)以及磁盘大小,Amazon EC2平台便会根据用户的设置分配一台云主机供用户使用。
(2)随时随地使用:可以通过各种移动设备或瘦客户端(如手机、平板电脑等)连接云端,使用云计算平台提供的服务,打破地理位置和硬件部署环境的限制。
(3)可度量的服务:云计算平台会对存储、CPU、带宽等资源保持实时跟踪,根据这些可量化指标对后台资源进行调整和优化。
(4)快速资源扩缩:用户可以根据自己的需求申请或释放虚拟资源,实现资源的快速扩缩。
(5)资源池化:云服务提供商的计算资源集中成一个巨大的资源池,这些资源以多租户的方式供用户共享使用。资源的种类包含存储、处理器、内存、带宽等。对云服务的提供者而言,各种底层资源的异构性被屏蔽,边界被打破,所有的资源可以被统一管理和调度,成为云计算资源池,为用户提供按需服务;对用户而言,资源池是透明的,可以按需使用付费。
从技术角度来看,云端软硬件维护、数据管理、安全防护均由云计算服务提供商负责,用户端仅需将设备接入即可使用云端的服务,降低了用户的技术门槛,提高了数据的安全性;使用云计算模式,用户将所要使用的数据和应用上传到云端即可随时随地通过任意终端设备进行数据访问和应用体验,实现了数据和应用的共享;云计算资源池具有很强的弹性,用户可以按需使用资源,并仅对使用的资源付费。
从商业角度来看,云计算模式提高了数据中心服务器、网络设备等资源的利用率,降低了用户的IT设备建设和维护费用,使用户可以专注于其核心业务。
1.1.3 云计算的发展历程
1. 云计算产生的五大契机
云计算是分布式计算、并行计算、效用计算、虚拟化、网络存储、负载均衡、热备份冗余等传统计算机和网络技术发展融合的产物,更是SaaS、SOA等技术混合演进的结果,图1.3所示的五大契机更是直接促进了云计算的诞生。
图1.3 云计算产生的五大契机
(1)虚拟化技术的诞生
虚拟化技术是将各种计算及存储资源充分整合和高效利用的关键技术。1998年,VMWare公司成立并首次引入了x86虚拟化技术。虚拟化技术使远程获取计算资源变得可行,也使得资源可以进行动态切分和组合,是将各种计算及存储资源充分整合和高效利用的关键技术。
(2)SaaS的诞生
1999年贝尼奥夫离开Oracle公司与几个Oracle公司原高管一起创办了Salesforce.com,主要向企业客户销售基于云的SaaS,也就是从服务器端向客户传递服务,号称“软件”终结者。用户通过瘦客户端自主选择合适的功能模块,即可使用客户关系管理(Customer Relationship Management,CRM)系统。这种模式的优势显而易见:由于软件的维护、升级都在服务器端,客户不必购买昂贵的软硬件而且避免了CRM等应用软件的配置和版本更新,软件开发商也不必储备大量的运维服务人员,软件新功能升级可以在服务器端快速进行,自然而然地完成了从License到服务的商业模式转型。
Salesforce.com对云计算的重要意义不仅在于它通过销售SaaS服务,成长为一家年销售额超过20亿美元的公司,更重要的是Salesforce.com第一次将SaaS服务大规模地销售给了企业用户,包括像通用电气、荷兰航空、NBC和Comcast这样的国际知名企业。Salesforce.com的成功第一次证明了基于云计算的服务不仅仅是大型业务系统的廉价替代品,它还可以是真正提高企业运营效率、促进业务发展的解决方案,同时可以在可靠性方面维持一个极高的标准。
(3)Google发表三大论文
2003年,Google在SOSP大会上发表了有关分布式存储系统(Google File System,GFS)的论文,在2004年的OSDI大会上发表了有关MapReduce分布式处理技术的论文,在2006年的OSDI大会上发表了关于BigTable分布式数据库的论文。这三篇重量级论文的发表,不仅使大家了解了Google搜索引擎背后强大的技术支撑,而且克隆这三项技术的开源产品也大量涌现。比较著名的有克隆MapReduce的Hadoop系统,克隆GFS的HDFS(Hadoop Distributed File System),以及克隆BigTable的HBase、Hypertable和Cassandra等。
这三篇论文和相关的开源技术极大地普及了云计算中非常核心的分布式技术。
(4)AWS的推出
在线零售商Amazon的B2C业务类似于中国的淘宝和京东的业务,平时的流量就很大,特别是到每年特定的时刻(比如圣诞节),流量会急速攀升。为了应对这种情况,Amazon需要购置远超过其平常使用量的硬件资源以应对这些增加的流量。显然这会造成很大的资源浪费,当发展到一定规模的时候,它发现自己的数据中心在大部分时间只有不到10%的利用率,剩下90%的资源都是闲置着,这些资源仅有的作用就是被用来缓冲圣诞节购物季这种高峰时段的流量。于是Amazon开始寻找一种更有效的方式来利用自己的数据中心,其目的就是将计算资源从单一的、特定的业务中解放出来,在空闲时提供给其他需要的用户。Amazon首先在企业内部进行实施,得到了很好的回报。随后,Amazon便将这个服务开放给外部的用户。通过租借硬件资源给公众,以减少浪费,这也就是Amazon推出AWS(Amazon Web Services)的最主要的原因。
在2006年初,Amazon推出了AWS的第一款产品S3(Simple Storage Service,简单存储服务)云存储服务;2006年8月推出了另一款产品EC2(Elastic Compute Cloud,弹性计算)云基础设施服务。AWS产品的出现使人们惊奇地发现计算资源原来可以像亚马逊的其他商品一样被销售。之所以说Amazon的EC2是云计算的一个里程碑,是因为它是业界第一个将基础架构大规模开放给公众用户的云计算服务IaaS(Infrastructure as a Service,基础设施即服务)。
继Amazon AWS之后,各种类似的云计算产品开始大量涌现,关于云计算的报道和解读遍布市场。多个企业纷纷投入云计算市场。在基础设施方面,除Amazon之外,IBM、微软等颇具实力的IT企业也开始提供云计算服务。
(5)Google对外提供GAE服务
2009年,Google开始对外提供GAE(Google App Engine)服务,这是一个PaaS(Platform as a Service,平台即服务)服务。Google搭建了一个完整的Web应用开发环境,给用户提供了主机、数据库、互联网接入带宽等资源,用户不必自己购买设备,而是可以在浏览器里面开发和调试自己的代码,然后直接部署到Google的云平台上,并对外发布服务。这样的好处是用户不必再担心主机、托管商、互联网接入带宽等一系列运营问题。因此GAE可以看作是托管网络应用程序的平台。
从架构上看,GAE提供了一套API,帮助你获取网络数据、发送邮件、存储数据、操作图片、缓存数据,相信以后还会有更多的API推出。开发人员在GAE的框架内开发,不用再考虑CPU、内存、分布等复杂和难以控制的问题,初级的程序员按照GAE的规范也可以写出高性能的应用。当然,实现高性能也是有代价的。比如不能使用socket,文件操作、数据查询必须有索引,不同时支持两个不等式做条件的查询等。对于开发而言,多了些约束,少了些选择。可以让开发更加简单,更关注业务。
作为PaaS平台的旗帜,Google App Engine补齐了云计算的产品版图,从此用户可以在基于云的环境中找到绝大部分计算资源。
2. 云计算发展历程的点滴事件
云计算被视为科技界的一次革命,带来工作方式和商业模式的根本性改变,与并行计算、分布式计算和网格计算关系紧密,更是虚拟化、效用计算、SaaS、SOA等技术混合演进的结果。这几十年来,云计算是怎样一步步演变的呢?让我们回顾一下云计算发展历程中的点滴事件,如表1.1所示。
表1.1 云计算发展历程的点滴事件