1.2 云计算技术概述
1.2.1 理解云计算的内涵
1.名称的由来
云计算是英文Cloud Computing的翻译。1983年,Sun Microsystems提出“网络是计算机(The Network is the Computer)”;2006年3月,Amazon推出弹性计算云(Elastic Compute Cloud,EC2)服务;2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SES San Jose 2006)首次提出“云计算(Cloud Computing)”的概念,该概念源于Google工程师克里斯托弗·比希利亚(Christophe Bisciglia)所做的“Google 101”项目中的“云端计算”。2008年初,Cloud Computing在中文中开始被翻译为“云计算”。
云计算是继20世纪80年代大型计算机到客户端-服务器的转变之后的又一次巨变。它是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡、热备份冗余等传统计算机和网络技术发展融合的产物。
2.定义
云计算没有统一的定义和标准。下面列出美国国家标准与技术研究院、维基百科、中国科学技术大学陈国良院士、中国电子学会云计算专家委员刘鹏教授给出的云计算的定义。
(1)美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)给出的定义。
英文原文:Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources(e.g., networks, servers, storage, applications, and services)that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics, three service models, and four deployment models.
中文翻译(意译):云计算是一种能够通过网络以便利的、按需付费的方式获取计算资源(包括网络、服务器、存储、应用和服务等)并提高其可用性的模式。这些资源来自一个共享的、可配置的资源池,并能够以最省力和无人干预的方式获取和释放。这种模式具有 5 个关键功能、3种服务模式和4种部署方式。
(2)维基百科给出的定义。
云计算是一种动态的易扩展的且通常是通过互联网提供虚拟化的资源计算方式,用户不需要了解云内部的细节,也不必具有云内部的专业知识或直接控制基础设施。
(3)中国科学技术大学陈国良院士给出的定义。
云计算是指基于当前已相对成熟与稳定的互联网的新型计算模式,即把原本存储于个人计算机、移动设备等个人设备上的大量信息集中在一起,在强大的服务器端协同工作。
(4)中国电子学会云计算专家委员,解放军理工大学刘鹏教授给出的定义。
长定义:“云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。”
短定义:“云计算是通过网络按需提供可动态伸缩的廉价计算服务。”
云计算的参考架构示意图如图1-4所示。
图1-4 云计算的参考架构示意图
如图 1-4 所示,云计算的组成通常可以分为 6 个部分,它们由下至上分别是:云基础设施、云存储、云平台、云应用、云服务和云客户端。
(1)云基础设施:主要是指 IaaS,包括计算机基础设施(如计算、网络等)和虚拟化的平台环境等。
(2)云存储:即将数据存储作为一项服务(类似数据库的服务),通常以使用的存储量为结算基础。它既可交付作为云计算服务,又可以交付给单纯的数据存储服务。
(3)云平台:主要指PaaS,即将直接提供计算平台和解决方案作为服务,以方便应用程序部署,从而帮助用户节省购买和管理底层硬件和软件的成本。
(4)云应用:最终用户利用云软件架构获得软件服务,用户不再需要在自己的计算机上安装和运行该应用程序,从而减轻软件部署、维护和售后支持的负担。
(5)云服务:云架构中的硬件、软件等各类资源都通过服务的形式提供。
(6)云客户端:主要指为使用云服务的硬件设备(台式机、笔记本电脑、手机、平板电脑等)和软件系统(如浏览器等)。
3.云和端的概念
云计算将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。这种资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。之所以称为“云”,是因为它在某些方面具有现实中云的特征:云一般都较大;云的规模可以动态伸缩,它的边界是模糊的;云在空中飘忽不定,你无法也无需确定它的具体位置,但它确实存在于某处。
“端”指的是用户终端,可以是个人计算机、智能终端、手机等任何可以连入互联网的设备。
云计算的一个核心理念就是通过不断提高“云”的处理能力,进而减少用户“端”的处理负担,最终使用户“端”简化成一个单纯的输入输出设备,并能按需享受“云”的强大计算处理能力。
1.2.2 认识云计算的特点
云计算技术具有以下特点。
1.可靠性较强
云计算技术主要是通过冗余方式进行数据处理服务。在大量计算机机组存在的情况下,系统中所出现的错误会越来越多,而通过采取冗余方式则能够降低错误出现的概率,同时保证了数据的可靠性。
2.服务性
从广义角度上来看,云计算本质上是一种数字化服务,同时这种服务较以往的计算机服务更具有便捷性,用户在不清楚云计算具体机制的情况下,就能够得到相应的服务。
3.可用性高
云计算技术具有很高的可用性。在储存上和计算能力上,云计算技术相比以往的计算机技术具有更高的服务质量,同时在节点检测上也能做到智能检测,在排除问题的同时不会对系统造成任何影响。
4.经济性
云计算平台的构建费用与超级计算机的构建费用相比要低很多,但是在性能上基本持平,这使得开发成本能够得到极大的节约。
5.多样性服务
用户在服务选择上将具有更大的空间,通过缴纳不同的费用来获取不同层次的服务。
6.编程便利性
云计算平台能够为用户提供良好的编程模型,用户可以根据自己的需要进行程序制作,这样便为用户提供了巨大的便利性,同时也节约了相应的开发资源。
1.2.3 概览云计算的演化和发展
1.云计算演化的4个重要阶段
云计算主要经历了 4 个阶段才演化到现在这样比较成熟的水平,这 4 个阶段依次是电厂模式、效用计算、网格计算和云计算。
(1)电厂模式阶段。
电厂模式就好比是利用电厂的规模效应来降低电力的价格,并让用户使用起来更方便,且无需维护和购买任何发电设备。
(2)效用计算阶段。
在1960年左右,当时计算设备的价格是非常高昂的,远非普通企业、学校和机构所能承受,所以很多人产生了共享计算资源的想法。1961年,人工智能之父约翰·麦卡锡(John McCarthy)在一次会议上提出了“效用计算”这个概念,其核心借鉴了电厂模式,具体目标是整合分散在各地的服务器、存储系统以及应用程序来共享给多个用户,让用户能够像把灯泡插入灯座一样来使用计算机资源,并且根据其所使用的量来付费。但由于当时整个IT产业还处于发展初期,很多强大的技术还未诞生,比如互联网等,因此,这个想法虽然一直为人称道,但是总体而言“叫好不叫座”。
(3)网格计算阶段。
网格计算研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多低性能的计算机来处理,最后把这些计算结果综合起来攻克大问题。可惜的是,网格计算在商业模式、技术和安全性方面的不足,使得其并没有在工程界和商业界取得预期的成功。
(4)云计算阶段。
云计算的核心与效用计算和网格计算非常类似,也是希望IT技术能像使用电力那样方便,并且成本低廉。但与效用计算和网格计算不同的是,云计算在需求方面已经有了一定的规模,同时在技术方面也已经基本成熟了。
2.云计算发展阶段
从1959年克里斯托弗·斯特雷奇(Christopher Strachey)提出虚拟化的基本概念,2006年Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会首次提出“云计算(Cloud Computing)”的概念,2010年工信部联合发改委联合印发《关于做好云计算服务创新发展试点示范工作的通知》,到2015年工信部关于印发《云计算综合标准化体系建设指南》的通知,云计算由最初的美好愿景到概念落地,目前已经进入到广泛应用阶段。概览云计算的发展过程,我们可以将云计算的发展分为理论完善阶段(1959年—2005年)、发展准备阶段(2006年—2009年)、稳步成长阶段(2010年—2012年)和高速发展阶段(2013年—2016年)4个阶段。
(1)云计算关理论完善阶段(1959年—2005年)。
云计算的相关理论逐步发展,云计算概念慢慢清晰,部分企业开始发布初级云计算平台,提供简单的云服务。
(2)云计算发展准备阶段(2006年—2009年)。
云计算概念正式提出,用户对云计算认知度仍然较低,云计算相关技术不断完善,云计算概念深入推广。国内外云计算厂商布局云计算市场,但解决方案和商业模式尚在尝试中,成功案例较少。初期以政府公有云建设为主。
(3)云计算稳步成长阶段(2010年—2012年)。
云计算产业稳步成长,云计算生态环境建设和商业模式构建成为这一时期的关键词,越来越多的厂商开始介入云计算领域,出现大量的应用解决方案,成功案例逐渐丰富。用户了解和认可程度不断提高,用户主动将自身业务融入云中。公有云、私有云、混合云建设齐头并进。
(4)云计算高速发展阶段(2013年—2016年)。
云计算产业链、行业生态环境基本稳定;各厂商解决方案更加成熟稳定,提供丰富的XaaS产品。用户云计算应用取得良好的绩效,并成为IT系统不可或缺的组成部分,云计算成为一项基础设施。
“云计算发展大事记”请参阅附录1。
1.2.4 辨别云计算的分类
1.按服务方式分类
云计算从服务方式角度分为公有云、私有云、混合云。
公有云:基础设施被一个销售云计算服务的组织所拥有。该组织将云计算服务销售给一般大众或广泛的群体。
私有云:云基础设施被一个单一的组织拥有或租用。该基础设施完全由该组织管理。
混合云:基础设施由私有云和公有云组成,每种云仍然保持独立,但用标准的或专有的技术将它们组合起来,具有数据和应用程序的可移植性(例如,可以用来处理突发负载)。
(1)公有云。
公有云被认为是云计算的主要形态,公有云通常指第三方提供商为用户提供的能够使用的云,让具有权限的用户可通过Internet使用。公有云价格低廉,其核心属性是共享服务资源。目前市场上公有云占据了较大的市场份额,在国内公有云可以分为以下几类。
① 传统的电信基础设施运营商建设的云计算平台,如中国移动、中国联通和中国电信等提供的公有云服务。
② 政府主导建设的地方性云计算平台,如贵州省建设的“云上贵州”等,这类云平台通常被称为政府云。
③ 国内知名互联网公司建设的公有云平台,如百度云、阿里云、腾讯云和华为云等。
④ 部分IDC运营商建设的云计算平台,如世纪互联云平台等。
⑤ 部分国外的云计算企业建设的公有云平台,比如Microsoft Azure、Amazon AWS等。
(2)私有云。
私有云是企业内部建设和使用云计算的一种形态,私有云是在企业内部原有基础设施上部署应用程序的方式。由于私有云是为企业内部用户使用而构建的,因而在数据安全性以及服务质量上自己可以有效地管控,私有云可以部署在企业数据中心的防火墙内,其核心属性是专有资源。
私有云可以搭建在企业的局域网上,与企业内部的公司的监控系统、资产管理系统等相关系统进行打通,从而更有利于企业内部系统的集成管理。
私有云虽然数据安全性方面比公有云高,但是维护的成本也相对较大(对于中小企业而言),因此一般只有大型的企业会采用这类的云平台。另外一种情况是,一个企业尤其是互联网企业发展到一定程度之后,自身的运维人员以及基础设施都已经充足完善了,搭建自己的私有云成本反而会比购买公有云服务来得低。
(3)混合云。
混合云融合了公有云与私有云的优劣势,近几年来快速发展起来。混合云综合了数据安全性以及资源共享性双重考虑,个性化的方案达到了节约成本的目的,从而获得越来越多企业的青睐。但在部署混合云时需要关注下面几个问题。
① 数据冗余方面:对于企业数据而言,做好冗余以及容灾备份是非常有必要的。但混合云缺少数据冗余,因此实际上数据安全性也不能得到很好的保证。
② 法律方面:由于混合云是私有云和公有云的集合,因此在法律法规上必须确保公有云和私有云提供商符合法律规范。
③ SLA(服务质量)方面:混合云相比于私有云而言在标准统一性方面会有欠缺。
④ 成本方面:混合云虽然兼有了私有云的安全性,但是由于API带来的复杂网络配置使得传统系统管理员的知识经验及能力受到挑战,随之带来的是高昂的学习成本或者系统管理员能力不足带来的额外风险。
⑤ 架构方面:基于混合云的私有网络(VPC)要求对公有云的整体网络设计进行重构,这对企业来说是很大的挑战。
(4)公有云、私有云和混合云比较。
公有云、私有云和混合云在建设地点、服务对象和数据安全等方面的比较如表1-4所示。
表1-4 公有云、私有云和混合云比较
关于私有云和公有云,有专家打比喻说:“私有云相当于自己建个水塔,塔里有多少水是固定的;而公有云就相当于自来水厂,可以应付波动的用水需求。”究竟哪种云才是云计算的最终形态,业界也有很多争论:公有云阵营认为,混合云是国内用户从“购买服务器”到“购买云服务”的过渡阶段,用户未来会把所有资源放在云端,这是趋势;而混合云阵营则认为,“公有云虽实现弹性扩容,但无法满足定制化需求;私有云可提高资源利用率,但无法为突发业务长期租用资源”;混合云阵营认为,私有云与公有云均有弊端,混合云才能融合两者的优势。从2015年至今,私有云厂商VMware、IBM,公有云厂商Amazon、Microsoft都陆续推出自己的混合云方案——这至少是未来 5年的主流方向。因此,企业最终选择部署私有云、公有云还是混合云,一方面取决于企业内部业务及基础设施建设情况,另一方面取决于云计算技术的发展对数据安全、资源利用、弹性扩容等企业需求的满足情况。
2.按服务类型分类
云计算按照服务类型大致可以分为3类:IaaS、PaaS和SaaS。我们可以这样理解:云计算是一栋大楼,而这栋楼又可以分为顶楼、中间、低层三大块,IaaS(基础设施)、PaaS(平台)、SaaS(软件)可以理解为这栋楼的3个部分,IaaS(基础设施)在最下端,PaaS(平台)在中间,SaaS(软件)在顶端,如图1-5所示。
图1-5 云计算分类图(按服务类型)
(1)IaaS。
基础设施即服务(Infrastructure as a Service,IaaS):服务提供商把计算基础(服务器、网络技术、存储和数据中心空间)作为一项服务提供给用户。它也包括提供操作系统和虚拟化技术等。
举例来说:几年前,如果企业想在办公室或者企业网站上运行一些新增的企业应用,就需要去买服务器或者别的高昂的硬件来控制本地应用,这样才能让业务正常运行。但现在可以租用云计算服务公司提供的场外服务器、存储和网络硬件而不用自己购买和维护,这样一来,企业便大大地节省了维护成本和办公场地。云计算服务公司提供的场外服务器、存储和网络硬件等基础设施就是为企业提供的服务,即IaaS。
(2)PaaS。
平台即服务(Platform as a Service,PaaS):服务提供商将软件开发环境和运行环境等以开发平台的形式提供给用户。
举例来说:随着企业业务的不断发展,企业内部应用不断增多,复杂度也不断增加,通过IaaS公司提供的服务可以减少硬件的支出成本,但企业还需要构建和维护各种应用解决方案(如虚拟服务器、操作系统和开发环境等),如果有特定的云计算服务公司可以直接在网上提供各种开发和分发应用的解决方案(应用开发平台),企业通过购买服务的方式使用,这就是PaaS。PaaS既可以帮助企业节省硬件上的投资,也可以让分散的网页应用管理、应用设计、应用虚拟主机和存储、安全以及应用开发协作工具等发挥更高效率。
(3)SaaS。
软件即服务(Software as a Service,SaaS):服务提供商将应用软件提供给用户。在这种模式下,应用作为一项服务托管,通过Internet提供给用户,可以帮助用户更好地管理他们的IT项目和服务,确保他们IT应用的质量和性能,监控他们的在线业务。
举例来说:随着移动互联技术的快速发展和智能设备的不断推陈出新,在工作和生活中,我们随时会采集很多图像信息,也需要随时记录和查看个人的运动健康信息等,这些原来都需要通过本地的存储和应用来实现,现在可以通过“百度云”和“QQ 运动”等进行快捷操作。“百度云”和“QQ运动”等基于云计算技术的“软件”为我们提供的服务就是SaaS。
(4)Iaas和Paas之间的比较。
如前所述,PaaS的主要作用是将一个开发和运行平台作为服务提供给用户,而IaaS的主要作用是提供虚拟机或者其他资源作为服务提供给用户。PaaS和IaaS的联系和区别如下。
① 开发环境:PaaS 通常情况下会给开发者提供一整套包括 IDE 在内的开发环境和测试环境。IaaS用户主要还是沿用以前比较熟悉的开发环境,但是因为之前的开发环境在和“云”的整合方面比较欠缺,所以使用起来不是很方便。
② 支持的应用:因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS支持的应用的范围是非常广泛的。PaaS支持的应用是受限的,因为要让一个应用能跑在某个PaaS平台,不仅需要确保这个应用是基于这个平台所支持的语言,还要确保这个应用只能调用这个平台所支持的API。所以,如果这个应用调用了平台所不支持的API,那么就需要对这个应用进行修改。
③ 开放标准:虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等协议的存在,使得IaaS在跨平台和避免被供应商锁定这两方面是稳步前进的。而PaaS平台的情况则不容乐观,因为不论是Google的GAE(Google App Engine),还是Salesforce的Force.com,都存在一定的私有API。
④ 可伸缩性:PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。而IaaS平台则需要开发人员手动对资源进行调整才能应对。
⑤ 整合率和经济性: PaaS平台整合率非常高,例如PaaS的代表GAE能在一台服务器上承载成千上万的应用。而普通的IaaS平台的整合率最多也不会超过100,而且普遍在10左右,使得IaaS的经济性不如PaaS。
⑥ 计费和监管:因为PaaS平台在计费和监管这两方面不仅达到了IaaS平台所能企及的操作系统层面(如 CPU 和内存的使用量等),而且还能做到应用层面(如应用的反应时间或者应用所消耗的事务多少等),这将提高计费和管理的精确性。
⑦ 学习难度:因为在IaaS上面开发和管理应用与现有的方式比较接近,而PaaS上面开发则有可能需要学一门新的语言或者新的框架,所以IaaS学习难度更低。
PaaS和IaaS的比较如表1-5所示。有关IaaS、PaaS和SaaS的详细内容请参阅“第4章 云服务”。
表1-5 PaaS和IaaS的比较
续表