该学习笔记取自《云计算原理及实战》一书,关于具体描述可以查阅原本书籍。
云计算被视为“革命性的计算模型”,因为它通过互联网自由流通使超级计算能力成为可能。
2006年8月,在圣何塞举办的SES(捜索引擎战略)大会上,时任谷歌(Google)公司首席执行官(CEO)的施密特(Eric Schmidt)在回答一个有关互联网的问题时提出了“云计算”这个概念。在施密特态度鲜明地提出“云计算”一词的几周后,亚马逊(Amazon)公司推出了EC2计算云服务。云计算自此出现,从此之后各种有关“云计算”的概念层出不穷,“云计算”开始流行。
云计算的理论和尝试已经有多年历史,从J2EE和.net架构,到“按需计算”(On-demand computing)、“效能计算”(Utility computing)、“软件即服务”(Software as a service)等新理念、新模式,其实都可看作是对云计算的不同解读或云计算发展的不同阶段。
在流量和服务器数量都高速增长的情况下,“一个能够与网页增长速度保持同步的系统”必不可少,这也是谷歌三篇有关分布式的论文(分别为Google File System分布式存储系统、MapReducefen分布式处理技术和BigTable分布式数据库)之所以具有重要指导意义的原因:一切均出自实践。
业界有一种很流行的说法,将云计算模式比喻为发电厂集中供电的模式。也就是说,通过云计算,用户可以不必去购买新的服务器,更不用去部署软件,就可以得到应用环境或者应用本身。
1.1.1 云计算的定义
由于云计算是一个概念,而不是指某项具体的技术或标准,于是不同的人从不同的角度出发就会有不同的理解。
1.分析师和分析机构对云计算的理解
早期的美林证券(Merrill Lynch)认为,云计算是通过互联网从集中的服务器交付个人应用(E-mail、文档处理和演示文稿)和商业应用(销售管理、客户服务和财务管理)。
《信息周刊》(Information Week)的定义则更加宽泛:云计算是一个环境,其中任何的IT资源都可以以服务的形式提供。
《华尔街日报》(The Wall street Journal)认为云计算使企业可以通过互联网从超大数据中心获得计算能力、存储空间、软件应用和数据。
2.不同IT厂商对云计算的理解
IBM 公司认为,云计算是一种计算风格,其基础是用公共或私有网络实现服务、软件及处理能力的交付,也是一种实现基础设施共享的方式,利用资源池将公共或私有网络连接在一起为用户提供IT服务。
Google公司的前CEO施密特认为,云计算把计算和数据分布在大量的分布式计算机上,这使计算力和存储获得了很强的可扩展能力,并使用户可通过多种接入方式(例如计算机、手机等)方便地接入网络获得应用和服务。
Google公司前全球副总裁李开复认为,整个互联网就是一片美丽的云彩,网民们需要在“云”中方便地连接任何设备、访问任何信息、自由地创建内容、与朋友分享。
微软的提法一直是“云 + 端”。微软认为,未来的计算模式是云端计算,而不是单纯的云计算。这里的“端”是指客户端,也就是说云计算一定要有客户端来配合。微软公司前全球资深副总裁张亚勤博士认为:“从经济学角度来说,带宽、存储和计算不会是免费的,消费者需要找到符合他们需要的模式,因而端的计算一定是存在的。
3.学术界对云计算的理解
“网格计算之父”伊安·福斯特(Ian Foster)认为,云计算是一种大规模分布式计算的模式,其推动力来自规模化所带来的经济性。他认为云计算的几个关键点是:大规模可扩展性;可以被封装成一个抽象的实体,并提供不同的服务水平给外部用户使用;由规模化带来的经济性;服务可以被动态配置(通过虚拟化或者其他途径),按需交付。
来自加州大学伯克利分校的一篇技术报告指出,云计算既是指透过互联网交付的应用,也是指在数据中心中提供这些服务的硬件和系统软件。
自维基百科(Wikipedia)的定义基本涵盖了各个方面的看法:“云计算是一种计算模式,在这种模式下,动态可扩展而且通常是虚拟化的资源通过互联网以服务的形式提供出来。
曾在IBM任职的朱近之在《智慧的云计算:物联网的平台》定义如下:“云计算是一种计算模式:把 IT 资源、数据和应用作为服务通过网络提供给用户。在计算机流程图中,互联网常以一个云状图案来表示,用来表示对复杂基础设施的一种抽象。云计算正是对复杂的计算基础设施的一个抽象。
美国国家标准技术学院(NIST)给云计算提供的定义:“云计算是一种模型,这个模型可以方便地通过网络访问一个可配置的计算资源(例如网络、服务器、存储设备、应用程序以及服务等)的公共集。这些资源可以被快速提供并发布,同时最小化管理成本以及服务供应商的干预。”上述定义应该算是比较清晰和恰当的,也是本书所采用的定义。
从计算发生的地方来看,最简单地回答是:云计算将软件的运行从平常情况下的个人计算机 (或桌面计算机)搬到了云端,也就是位于某个“神秘”地理位置上的服务器或服务器集群上。
从资源供应的形式来看,云计算是一种服务计算,即所有的IT资源,包括硬件、软件、架构都被当作一种服务来销售并收取费用。对于云计算来说,其提供的主要服务是三种:基础设施即服务(IaaS),提供硬件资源,类似于传统模式下的CPU、存储器和 I/O;平台即服务(PaaS),提供软件运行的环境,类似于传统编程模式下的操作系统和编程框架;软件即服务(SaaS),提供应用软件功能,类似于传统模式下的应用软件。
云计算将一切资源作为服务,按照所用即所付的方式进行消费正是主机时代的特征。在主机时代,所有用户通过显示终端和网线与主机连接,按照消费的CPU时间和存储容量进行计费。所不同的是,在主机模式下,计算发生在一台主机上;在云计算下,计算发生在服务器集群或者数据中心。 概括来说,云计算是各种虚拟化、效用计算、服务计算、网格计算、自动计算等概念的混合演进并集大成之结果。
1.1.2 计算模式的演进过程
下图从计算模式的角度展现了云计算的发展。
1.主机系统与集中计算
1964 年,世界上第一台大型主机System/360诞生,引发了计算机和商业领域里的一场革命。大型主机的一个特点就是资源集中,计算、存储集中,这是集中计算模式的典型代表。主机的用户大都采用终端的模式与主机连接,本地不进行数据的处理和存储,也不需要进行诸如补丁管理、防火墙保护和病毒防范等措施。
云计算与主机计算一个重要的区别是其面向的用户群体不同。主机计算的用户通常是大型机构,并为关键应用所准备,如人口普查、消费统计、ERP、财务交易等;而云计算则面向普罗大众,可以运行各种各样的大、中、小型应用程序。
2.效用计算
主机的购买成本高昂,一些用户只能租用,而不是购买。于是有人提出了效用计算的概念,目标是把服务器及存储系统打包给用户使用,按照用户实际使用的资源量对用户进行计费。效用计算中的关键技术就是资源使用计量,它保证了按使用付费的准确性。此种计算范式的最大优势是用户无须提前付费,也无须将IT资源买断。
3.客户机/服务器模式
从服务的访问模式上看,云计算确实有**客户机/服务器模式(Client/Server)**的影子:客户通过某种设备与远处的云端联系在一起,使用运行在云端的应用软件所提供的服务。不过,在这种形似的背后,云计算提供的这个“远程服务器”具有无限的计算能力、无限的存储容量,且从来不会崩溃,几乎没有什么软件不能运行在其上。
4.集群计算
服务器集群计算是用紧密耦合的一组计算机来达到单个目的,而云计算是根据用户需要提供不同支持来达到不同的目的。此外,服务器集群计算是有限度的分布式计算,其面临的挑战不如云计算所面临的分布式计算复杂。另外,集群计算并不考虑交互式的终端用户,而云计算恰恰需要考虑。显然,云计算包含了服务器集群计算的元素。
5.服务计算
服务计算也称为面向服务的计算,其更为准确的名称是软件即服务(SaaS)。服务计算与云计算仍然存在重要区别。首先,虽然服务计算一般在互联网上实现,但服务计算不一定必须在云中提供,单台服务器、小规模服务器集群、有限范围的网络平台就可以提供服务计算;其次,服务计算一般仅限于软件即服务,而云计算将服务的概念推广到了硬件和运行环境,囊括了基础设施即服务、平台即服务的概念。
6.个人计算机与桌面计算
个人计算机具备自己独立的存储空间和处理能力,虽然性能有限,但是对于个人用户来说,在一段时间内也够用了。个人计算机可以完成绝大部分的个人计算需求,这种模式也叫桌面计算。
在互联网出现之前,软件和操作系统的销售模式都是授权(License)模式,也就是通过软盘或者光盘,将软件代码复制到计算机之上,而每一次复制,都需要向软件开发商付费。升级的过程有时会很烦琐。对于一个大型企业来讲,它的IT部门可能需要管理上百种软件、上千个版本、上万台计算机,每个版本的软件都需要维护,包括问题追踪、补丁管理、版本升级和数据备份等,这绝非一项简单的工作。
7.分布式计算
个人计算机没有解决数据共享和信息交换的问题,于是出现了网络——局域网及后来的互联网。网络把大量分布在不同地理位置的计算机连接在一起,有个人计算机,也有服务器。
分布式计算依赖于分布式系统。分布式系统由通过网络连接的多台计算机组成。每台计算机都拥有独立的处理器及内存。这些计算机互相协作,共同完成一个目标或者计算任务。
8.网格计算
计算机的一个主要功能就是复杂科学计算,而这一领域的主宰就是超级计算机。以超级计算机为中心的计算模式存在明显不足:造价极高,通常只有一些国家级的部门(如航天、气象和军工等部门)才有能力配置这样的设备。随着人们越来越需要数据处理能力更强大的计算机,人们开始寻找一种造价低廉而数据处理能力超强的计算模式,最终科学家们找到了答案,那就是网格计算。
它是伴随着互联网而迅速发展起来的、专门针对复杂科学计算的新型计算模式。这种计算模式利用互联网把分散在不同地理位置的计算机组织成一台“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一堆网格”,所以这种计算方式叫网格计算。为了进行一项计算,网格计算首先把要计算的数据分割成若干“小片”,然后将这些小片分发给分布的每台计算机。每台计算机执行它所分配到的任务片段,待任务计算结束后将计算结果返回给计算任务的总控节点。
网格计算其核心是试图去解决一个巨大的单一的计算问题,这就限制了它的应用场景。在非科研领域,只有有限的用户需要用到巨型的计算资源。从某种程度来看,网格要做的很多事情也是云计算要做的事情,但网格计算却不能算是云计算。首先,网格计算主要针对科学计算和仿真,而云计算则是通用的。其次,网格不考虑交互式终端用户,而云计算要考虑。
9.SaaS
SaaS全称为Software as a service,中文译为“软件即服务”,它是一种通过Internet来提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己的实际需求,通过互联网向厂商订购所需的软件应用服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。
10.云计算的出现
纵观计算模式的演变历史,可以总结为:集中─分散─集中。云计算提供的基本服务有三种:一是硬件资源服务;二是运行环境服务;三是应用软件服务。那么用户也可用至少三种方式来使用云平台:一是利用云计算(平台)来保存数据(使用云环境所提供的硬件资源);二是在云计算平台上运行程序(使用云环境的运行环境);三是使用云平台上面的应用服务(使用云上布置的应用软件服务,如地图、搜索、邮件等)。
云计算至少有以下四个优势:按需供应的无限计算资源;无须事先花钱就能使用的IT架构;基于短期的按需付费的资源使用;单机难以提供的事务处理环境。
真正的云计算服务同时满足以下三个条件:
① 服务应该是随时随地可接入。用户可以在任何时间、任何地点,通过任何可以连接网络的设备来使用服务,而无须考虑应用程序的安装问题,也无须关心这些服务的实现细节。
② 服务应永远在线。偶发问题可能出现,但一个真正的云计算服务应时刻保证其可用性和可靠性,即保证随时可通过网络的接入,并正常提供服务。
③ 服务拥有足够大的用户群。这就是所谓的“多租赁”,由一个基础平台向多个用户提供服务的“租赁”。虽然没有明确的数量来进行划分,但只是针对少数用户的服务,即使用云计算相关的技术来支撑其基础系统架构,也不应该归为云计算服务。因为只有庞大的用户群,才会产生海量数据访问压力,这是云计算出现的最根本原因,也是云计算服务区别其他互联网服务的标志之一。
1.1.3 云计算简史
20世纪60年代,“人工智能之父”约翰·麦卡锡(John McCarty)曾经说过:“计算资源可能在未来成为一种公用设施”。这应该是最早发表过的与云计算相关的表述。
1966 年,道格拉斯·帕克希尔(Douglas Parkhill)出版了《计算机效用的挑战》一书。该书已经描述了云计算,只不过没有用“云计算”这个名词。“云”这个词源自电信产业。
1999年美国易安信公司(EMC)提出了数据拨号音的设想。
亚马逊公司在 2005 年在其内部首先实施了亚马逊 Web 服务(AWS)效用计算模式。之后,亚马逊公司决定将自己的云计算提供给外部的客户,并在 2006 年开始将 AWS 作为效用计算向外部客户提供。图 1.5所示为云计算发展历史中的重大事件。
1.1.4 云计算的推动力
云计算的出现是由多种因素促成,具有一定的必然性,具有决定性因素如下:网络带宽的提升、技术成熟度、移动互联网的发展、数据中心的演变、经济因素、大数据、提高资源利用率节能降耗、降低信息系统的维护成本、提升 IT 资产的安全态势、提升信息系统的灾备能力。推动云计算出现和发展的动力就是节省、灵活、方便、弹性、无限、按用量计费。