第2章 云计算的相关技术和交付模式——云的获取
2.1 饮水思源
早在几十年前,网络工程师就已将云画在原理图中,用意即是表示自己的网络连接到了其他未知甚至不相关的网络,尤其是广域网。虽然当时工程师们使用的是较为模糊的标志,但意外的是,随着网络的逐步普及以及带宽的数目增加,在线计算服务的使用等已使得云计算原本的想象模型转为了现实。
在过去二十年中,云这种图形使用得越发普遍。关于云计算中所谓的“云”,有很多人把它比作是一种针对软件和硬件的计算资源。这种资源令企业或者个人在使用云的时候无需知道他们精确的物理位置,可以认为那只是借用计算机网络图表来形容云隐藏的各种基础设施的一种图形符号。
不同于过去的计算机网络,如今的网络和Web浏览器能够比较容易地连接到分散在世界各地的软硬件资源,这些资源通常是通过网络提供的。互联网数据中心(Internet Data Corporation, IDC)对这种模型的巨大优势进行了预测:在2013年,投资在云信息服务上的资金将高达442亿美元,这是自2009年投入173亿美元以来又一次大规模幅度的增长。
接下来,让我们一起来看看云计算的一些核心技术。
2.1.1 虚拟化
虚拟化技术算不上是什么新鲜事物,它早已在人类科学技术诞生时就存在了,也称得上是人类技术的核心技术之一。与此同时,虚拟化技术并不只是云计算所独有的核心技术,它在计算机行业里也得到了充分的应用。
在伟大的1964年,世界上第一台大型主机System/360(简称S/360)闪亮登世。虚拟化即是其中一项核心技术。由20世纪50年代虚拟化概念的提出,到20世纪60年代IBM公司在大型机上实现了虚拟化的商业用途,从操作系统的虚拟内存到Java语言虚拟机,再看当下基于x86体系结构的服务器虚拟化技术的迅猛发展,都为这看似有些抽象的“虚拟化”概念添加了极其丰富的内涵。
“计算机虚拟化”称得上是一个比较广泛而又充满变化的概念,在维基百科中的定义是:虚拟化是将计算机物理资源如服务器、网络、内存及存储等予以抽象、转换后呈现出来,使用户可以比原来的组态更好的方式来应用这些资源。这些资源的新虚拟部分不受现有资源的架设方式、地域或物理组态所限制。
计算机系统可以分为若干个层次,从下至上包括底层硬件资源、操作系统、操作系统提供的应用程序编程接口,以及运行在操作系统之上的应用程序。虚拟化的主要目标是简化包括基础设施、系统和软件等IT资源的表示、访问和管理。
虚拟化技术具有可以在不同层次之间构建虚拟化层,向上提供与真实层次相同或者类似的功能,使得上层系统可以运行在该中间层之上。而这个中间层可以解除其上下两层间原本存在的衔接关系,使上层的运行能够不依赖于下层的具体实现。为了替“虚拟化”加上不同的定语,就形成不同的虚拟化技术。现如今,应用比较广泛的虚拟化技术有基础设施虚拟化、系统虚拟化和软件虚拟化等不同类型。
接下来举一个较为令人容易理解的例子,当系统的内存资源不够时,虚拟内存技术就能发挥它的作用了。虚拟内存技术指在磁盘存储空间中划分一部分作为内存的中转空间,其作用是存储内存中存放且暂时不用的数据。在程序用到这些数据时,再将它们从磁盘换到内存。如此一来,能够利用廉价的硬盘中一部分资源来充当重要的内存,用以补充内存的不足,通过低成本的形式解决了系统应用的要求。相信这种技术对于很多使用电脑上模拟的次世代游戏主机或其他游戏平台的读者来说非常熟悉。
根据上述例子,我们可以看到,虚拟化可以说是资源的逻辑表示,它并不被物理限制所约束。资源既可以是各种硬件资源,如CPU、内存、存储、网络;也可以是各种软件环境,如操作系统、文件系统、应用程序等。按照这个定义,内存是真实资源,而硬盘则是这种资源的替代品。意外的是,在云计算中,“云”可以被看成一个无限大的硬盘,况且它远比真实的硬盘更加经久耐用。
2.1.2 面向服务架构
面向服务架构(Service Oriented Architecture, SOA)指的是用户的业务能够被直接转换成为能够通过网络访问的一组相互连接的服务模块。面向服务架构的设计思想带动了Web服务技术的发展,使得开放式的数据模型和通信标准更加广泛地被人们使用,最大程度上促进了已有信息系统的联系。
于我们而言,面向服务架构所需要强调的是将业务直接映射到模块化的信息服务,并且最大程度地着重使用IT资源,尤其是软件资源。当使用面向服务架构来实现业务时,用户可以快速创建适合自己的商业应用,并通过流程管理技术来加速业务方面的处理,促进业务上的创新。面向服务架构还可以将用户运行平台及数据来源上的差异屏蔽掉,从而使得IT系统能够以一致的方式来更优地提供服务。
2.1.3 移动互联网和Web2.0
互联网和移动通信网是当今最具影响力的两个全球性网络,移动互联网恰恰融合了两者的发展优势;移动互联网时代的来临,从用户的使用角度来说,最好的体验是淡化有线和无线之间的概念。
从20世纪40年代世界上第一台电子计算机诞生,已经过去了半个多世纪。但是在过去的几十年里,互联网将全世界的企业与个人连接了起来,并深刻地影响着每个企业的业务运作及每个人的生活。
第一代互联网由冷战思维开启。1969年,为了能在核战争爆发时保障通信畅通,美国国防部启动了具有抗核打击能力的计算机网络ARPANET的研究项目。ARPANET在分组交换技术之上建立,首批网络连接了美国四所大学。由此产生了足以实现不同网络之间互联的需求,促使了TCP/IP协议的横空出世。1982年,ARPANET开始使用IP协议。虽说第一代的互联网并没有在实际意义上连接全球的计算机网络,但是却具有十分深远的意义,它使人类社会初现了信息社会的雏形。
当蒂姆·伯纳斯·李(Tim Berners Lee)爵士出现在2012年伦敦奥运会开幕式上的时候,不止展现了英国人对其在1989年发明了万维网(用以连接和浏览互联网页的系统)这一在互联网全球化发展中的贡献的表彰,同时表达了全人类对他提出万维网(WWW)的设想表示由衷的感谢。他发明了超文本,使用超级链接将不同服务器上的网页进行链接,从而形成了人们便于访问拥有相互关联信息的第二代互联网。
2003年后,WWW从纯粹通过浏览器浏览HTML网页的Web 1.0模式演化到便于大量用户共同参与互联网内容形成的Web 2.0阶段。新的应用涅槃而生,如博客(Blog)、社会关系网络(SNS)、维基百科(Wiki)、内容聚合(RSS)、混搭编程(Mashup)和对等网络(P2P)等。用户对互联网内容的贡献空前的增加,软件更多以服务的形式通过互联网被发布和被访问,从而驱使这些网络服务需要海量的存储和计算能力方能够满足日益增长的业务需求。该出现使得用户从信息的获得者摇身一变成为了信息的贡献者,也使得互联网应用(Rich Internet Application, RIA)成为网络应用的发展趋势。Web 2.0已经成为了实际意义上的标准互联网运用模式。
不同于以往的Web 1.0的时代,这些都是用户在个人电脑上完成的工作。个人电脑不再仅仅是为用户提供应用、保存用户数据的中心,而是蜕变为接入互联网的终端设备。Web 2.0的出现和广泛流行深远地影响了用户使用互联网的方式。现在,人们越来越习惯从互联网上获取所需的应用与服务,与此同时将自己的数据在网络上共享与保存。Web 2.0不单单提供了云计算的接入模式,也为云计算培养了用户习惯。
如果单纯从时间上看,第三代互联网计算技术从2007年突然兴盛,并且在短时间内形成盈利模式,正式揭开了第三代互联网的面纱。第三代互联网的基础就是无处不在的宽带网络。
稳定的互联网接入是用户获取云计算中丰富多彩资源的基础,不断提高的带宽是用户获得完美体验的前提,两者存在辩证统一的关系。云计算的提出本身就来源于带宽的提高,如果没有我们目前带宽的提高就不可能提出云计算的模式。由于互联网接入的普及和改善,使得单机模式通过宽带走向集中模式成为可能,使得用户通过互联网使用远程云端的服务成为可能,在用户和云间搭起了宽阔的桥梁。
提及网络,我们再来看看当下最为炙手可热的3G。3G是3rd-Generation的简写,是第三代移动通信技术的简称。3G是指支持高速数据传输的蜂窝移动通信技术,是将无线通信与互联网相融合的新一代通信技术。截至2009年7月,全球移动用户已多达44亿,普及率达65%,其中3G用户已经超过5亿,可见3G正在以惊人的速度增长。
3G将为云计算带来数以亿计的宽带移动用户。在目前看来,网络通信技术的发展是云计算的发展必要环境之一。
2.1.4个人电脑和桌面计算
我们的个人电脑有90%以上的计算时间和30%左右的存储空间没有得到充分利用。个人电脑的工作一般主要集中在上网以及文字处理上,而这些任务只需要占用很少的系统资源,而且个人电脑基本只能供一个人使用,别人不能分享你的计算机资源,系统资源浪费巨大。这种传统的模式不仅造成了资源的浪费,而且无法在需要大量计算时提供富有弹性化的资源。
在互联网出现之前,软件和操作系统的销售模式都是授权(license)模式,简单来说,就是通过软盘或者光盘,将软件代码复制到计算机之上,每一次复制,都需要向软件的开发商支付费用。这种固定的模式发展至今,不可避免地产生了一些问题,比如费用太高、软件升级费用不可控制等。
2.2 交付模式
在前文中提及,业界按照云计算提供者与使用者的所属关系为划分标准,将云计算分为三类:公有云、私有云和混合云。
公有云
公有云(Public Cloud)是由若干企业和用户共同使用的云环境。IT业务和功能以服务的方式通过互联网来提供给广泛的外部用户使用,用户无需拥有针对该服务在技术层面的知识,无需雇佣相关的技术专家,无需拥有或者管理所需的IT基础设施。在公有云中,用户所需的服务是由一个独立的、第三方的云提供商提供。该云提供商也同时替其他用户服务,这些用户将共享这个云提供商所拥有的资源。
私有云
私有云(Private Cloud)是由某个企业独立构建和使用的云环境,IT能在防火墙内通过企业内部网以服务的形式为企业内部用户提供。私有云的所有者不需与其他企业或组织共享任何资源,私有云是企业或组织所专有的计算环境。在私有云中,用户是这个企业或组织的内部成员,他们共享着云计算环境所提供的所有资源,公司或组织以外的用户无法访问这个云计算环境提供的服务。
混合云
混合云(Hybird Cloud)是整合了公有云与私有云所提供服务的云环境。用户可以根据自身因素和业务需求选择合适的整合方式,制订其使用混合云的规则和策略。其中,自身因素是指用户本身所面临的限制与约束,如信息安全的要求、任务的关键程度和现有基础设施的情况等;而业务需求则是指用户期望从云环境中所获得的服务类型。
在现实生活中,混合云的商业定义是最为灵活的。用户还可以选择“被管理的私有云”和“被托管的私有云”两种提供模式。在被管理的私有云中,承载云风格的IT设备和基础设施仍由所属的企业或组织拥有,一般位于企业的数据中心内。其私有云的创建和运维却将由专业的第三方机构来完成。这样的第三方机构常常会通过以下步骤来帮助客户完成私有云的搭建:首先,将客户现有的物理资源通过虚拟化技术进行逻辑化的处理,形成便于划分的资源池;其次,在该逻辑资源池上创建业务应用,并订立服务目录以便于使用者进行浏览;最后,提供自助访问接口和用量计费功能给业务应用,服务上线并被私有云所属的企业或组织内用户使用。其后,该第三方公司还将为客户持续地提供在运维上的支持,如管理、业务升级、新服务上线等。
用户对于公有云的选择可以分为排他的公有云和开放的公有云两种。在排他云中,云服务的提供者和使用者并不属于同一个企业,但它们事先知道谁会提供何种服务,谁又会使用何种服务。它们通过线下的协商确定服务价格和服务质量。排他云通常出现在企业的联盟中,好比某大企业与它的众多供应商和业务伙伴间就可以建立排他云。
在开放的公有云中,使用者和提供者在服务预订前彼此并不知晓对方,他们的关系是通过在线服务订阅的方式确立的。服务条款通常是由服务提供方预先定义和控制的,而服务价格和服务质量约定也是自动的、标准化的,由服务提供方预先设定。
2.3 相关概念及联系——云之系谱
云计算并不是突然出现的,而是以往的技术和计算模式发展和演变的一种结果,它也未必是计算模式的终极模式,而是适合于目前商业需求和技术可行性的一种发展态势。
跟着,就让我们来辨析云计算与这些相关概念的差别。
2.3.1 效用计算
当我们踏入云时代,效用计算(Utility Computing)似乎是经常被人们拿出来做引用并且与云计算来比较的。效用计算强调的是IT资源,譬如计算能力和存储容量等,能够根据用户的要求按需地分配,而且用户只需要按照实际使用情况付费。其目标是通过服务器及存储系统打包源量对用户进行计费。这种模式下,用户不是为使用服务去拥有资源的所有权,而是租赁资源。
效用计算追求的是提高资源的有效利用率,最大灵活性地使用资源。也就是希望IT资源能够达到像传统公共设施(如水和电等)一样的供应能力以及收费方式。效用计算使得企业和个人不再需要一次性的巨额投入就可以拥有巨量的计算资源,同时能够降低使用和管理这些资源的成本。效用计算追求的是提高资源的有效利用率,最大程度地降低资源的使用成本和提高资源使用的灵活性。
云计算中的资源使用应采用效用计算所提倡的资源按需供应、用户按使用量付费的理念。云计算不但注重基础资源的提供,而且更为注重服务的提供。在云计算环境中,除了服务器、存储设备等硬件IT基础资源能够以服务的形式来提供之外,应用的开发、运行和管理也是以服务的形式提供的,应用本身也可以采用服务的形式来提供。因此,云计算与效用计算相比,技术和理念所涵盖的范围更为广泛可行。
2.3.2 物联网
前国务院总理温家宝于2009年11月3日在人民大会堂向首都科技界发表的题为《让科技引领中国可持续发展》的讲话中明确指出:“信息网络产业是世界经济复苏的重要驱动力。全球互联网正在向下一代升级,传感网和物联网方兴未艾。”温家宝的讲话将物联网(Internet of Things, IoT)提升到了国家战略的高度。
维基百科对物联网的定义是这样的,把感应器嵌入到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道以及家用电器等各种真实物体上甚至是动物身体内,通过互联网连接起来,进而运行特定的程序,形成远程控制。
物联网的核心基础在于物与物之间的互联,是把人、动物、物理实体和信息系统互相联系起来的遍布全球的系统。物联网通过大量分散的射频识别(RFID)、传感器、全球定位系统、激光扫描器等小型设备,将感知的信息,通过互联网传输到指定的处理设施上进行智能化处理,完成识别、定位、跟踪、监控和管理等工作。
通过物联网,可以利用中心计算机对机器、设备、人员进行集中管理、控制,并且通过更加精细和动态的方式优化生产和优化生活,实现人类社会与物质世界的有机整合以及和谐相处。物联网的应用也变得日趋丰富,好比学生进出校门的管理,高速公路不停车的收费系统、公路铁路车辆的调度系统、物流货品的追踪管理、大流通仓储管理、手机移动支付系统等,这一切都基于物联网理论的应用探索。
云计算与物联网在概念上存在着极强的连接性。我们可以将物联网看作是处于前端的传感器与网络设备、处于核心的云计算的大数据处理平台以及上层的应用系统,这三者的完美结合体。在当下这个大数据时代,云计算作为物联网大数据处理的核心平台,适用于处理物联网中地域分散、数据海量、动态性和虚拟性强的各种应用场景的数据分析和业务分析,用以协助企业或是政府做出最快且最为合理的决策。
云计算的集中数据处理和管理能力将有效地解决海量物联信息存储和处理问题。云计算是一次变革,而物联网决然不是变革。通过一个传感器将信息送到一个中央系统然后进行数据分析,那么我们肯定需要一个庞大的具有云风格的计算中心来支撑和整合这些信息。
2.3.3 并行计算
云计算与高性能之间也存在着一定的关联。高性能计算(High Performance Computing),又称作并行计算(Parallel Computing)。它将一个科学计算问题分解为多个小的计算任务,并将这些小任务快速解决。它以处理复杂运算问题为目的。并行计算一般应用于诸如军事、能源勘探、生物、医疗等对计算性能要求极高的领域,所以也被称为超级计算(Super Computing)。
解决计算问题的并行程序往往需要特殊的算法,编写并行程序需要考虑很多课题之外的因素,例如各个并发执行的进程之间如何协调运行、任务如何分配到各个进程上运行等。所以并行计算机是一群同构处理单元的集合,这些处理单元通过通信和协作来更快地处理大规模计算问题。
云计算与传统意义上的并行计算相比有类似之处,不过也存在明显的区别。最根本的区别就在于并行计算需要采用特定的编程范例来执行单个大型计算任务或者运行某些特定应用,而云计算对用户的编程模型和应用类型等没有特殊的某一限定,用户不再需要开发复杂的程序就可以把他们的各类企业和个人应用迁移到云计算环境中。
在并行计算中,计算资源往往集中在单个数据中心的若干台机器或者集群上。云计算则更加强调用户通过互联网使用云服务,并在云中利用虚拟化进行大规模的系统资源抽象和管理。可见,云计算考虑的视角是如何为数以千万计的不同种类应用提供高质量的服务环境,并且如何提高这个环境对用户需求的响应从而加速业务创新。
云计算是互联网技术和信息产业蓬勃发展的背景下的产物,完成了从传统的、单一的计算模式到现代的、多元的计算模式的转变。
2.3.4 网格计算
随着人们对于计算机数据处理能力要求越来越高,人们开始寻找一种造价低廉而数据处理能力超强的计算模式,最终科学家们找到了这个问题的答案,那便是网格计算(Grid Computing)。
网格计算是一种分布式计算模式。它是伴随着互联网而迅速发展的、专门针对复杂科学计算的新型计算模式。网格计算将分散在网络中的空闲服务器、存储系统和网络连接在一起,形成一个整合系统,为用户提供功能强大的计算及存储能力来处理特定的任务。这种计算模式利用互联网把分散在不同地理位置的计算机组织成一台“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一堆网格”,所以这种计算方式叫网格计算。网格技术的开创者Ian Foster将之定义为“在动态、多机构参与的虚拟组织中协同共享资源和求解问题的计算方式”。
这样组织起来的“虚拟的超级计算机”具备了两个极关键的优势:其一是数据处理能力超强,满足了对计算能力的需求;其二是对于闲置的处理能力的合理利用。以一项计算为例,网格计算首先把要计算的数据分割成若干“小片”,然后将这些小片分发给分布在网络里的每台计算机。每台计算机执行它所分配到的任务片段,待任务计算结束后将计算结果返回给计算任务的总控节点。
网格计算在学术领域方面取得了很多进展,包括一些标准和软件平台的开发,但是在商业领域却没有得到广泛地普及。网格计算未能在商业上普及的主要原因有两个。一是支持的业务类型有限。技术平台都是以管理这种计算任务为宗旨进行设计和实现的。但是置身于商业领域,对于计算的主要需求大多包含为数据挖掘、搜索、内容分发(音乐、图片、视频和新闻等门户网站)、在线游戏、电子商务、交易处理(股票交易和订票等)、协作等非结构性数据的应用。二是网格计算的一个核心,就是把任务进行分解,从而让每个子任务都可以在一个节点上独立完成。事实上,很多计算任务如果要进行这种改造,产生的结局往往不太乐观,不是工作量太大,就是得不偿失。
云计算与网格计算不同的是,资源的所属关系上存在着较大差异,也可以说在网格计算中是多个零散资源为单个任务提供运行环境,而在云计算中是单个整合资源为多租户提供服务。多租户是云计算的一个核心的属性。云计算用户只需要使用云中的资源,并不需要关注系统资源的管理和整合。这一切都将由云提供者进行处理,用户看到的是逻辑上单一的整体。网格计算中是多个零散资源提供运行环境,而在云计算中是单个整合资源为多个用户提供服务。
并行计算、网格计算仅仅是一个技术的进步。尽管有专家认为网格计算与云计算的关系,就像是OSI与TCP/IP之间的关系,但在我眼中云计算是一个产业思维方式的变化,因而云计算能称为变革。
2.3.5 软件即服务
软件即服务(SaaS)最初出现于2000年。加大伯克利认为SaaS是云计算的前半部分。可见,它与云计算的关系有多密切。SaaS是一种通过Internet来提供软件的模式。有人会将云计算和SaaS(Software as a Services)混淆,认为云计算就是SaaS。从表面上看,SaaS好像和云计算有许多类似的特征,但是从产业的角度讲,以前做SaaS产业,既要做应用,同时又要做平台,以硬件、软件和市场的整个产业链为一体。由于它是自给自足的,所以它的平台利用率极低。这也导致了它在整个产业链上的不堪重负。而云计算在资源管理方面的集中和优化管理,恰好把资源这一块给剥离出来了。
现如今SaaS已经非常普及了。我们所熟悉的在线游戏就是SaaS的一种。云计算是通过将游戏应用直接剥离出去,留下平台,做平台的始终做平台,而做云计算资源的人就专心做好自身的调度和服务。这种方式使做SaaS的人可以专注于自己所熟悉的业务,为别人提供软件和服务的应用。
SaaS企业一般来说担任着做应用的专家身份,它对自己的应用非常熟悉,但对底层的资源整合却不是很熟悉,而云计算恰好就为它解决了这种尴尬局面。就这个问题,我们将在下一章中更为详细地讨论。
2.3.6 互联网数据中心
互联网数据中心(Internet Data Center)简称IDC。对于IDC的概念,目前还没有一个统一的标准,但从概念上可以将其理解为公共的商业化的互联网机房,同时它也提供IT专业服务,是IT行业和服务的重要基础设施。IDC不仅是一个服务概念,还是一个网络概念,它构成了网络基础资源的一部分,就像骨干网、接入网一样,提供了一种高端的数据传输(Data Delivery)的服务和高速接入(High Speed Internet)服务,基于互联网网络,为集中式收集、存储、处理和发送数据的设备提供运行维护的设施基地并提供相关的服务。具体的IDC提供的业务包括主机托管(机位、机架、机房出租)、资源出租(如虚拟主机业务、数据存储服务)、系统维护(系统配置、数据备份、故障排除服务)、管理服务(如带宽管理、流量分析、负载均衡、入侵检测、系统漏洞诊断),以及运行服务、其他支撑等。
云计算与传统互联网数据中心相比,资源利用率的区别在于核心看点,由此产生的商业利益就自然有着天壤之别。互联网数据中心一般采用服务器托管和虚拟主机等方式对网站提供服务。每个租用互联网数据中心的网站所获得的网络带宽、处理能力和存储空间都是固定的或是根据客户需求设定的。然而,绝大多数网站的访问流量都无法做到均衡和动态地利用资源。像是大多的视频网站具有非常强的时间性,白天访问的人少,到了晚餐时间过后就会流量暴涨;某些食品销售网站的季节性很强,平时访问人不多,但是到节日或旺季前访问量就会激增;有的则平时一直默默无闻,突然一个爆炸新闻使得访问量暴增而陷入瘫痪。网站拥有者为了应对这些突发流量,会按照峰值要求来配置服务器和网络资源,使得互联网数据中心的资源的平均利用率一般只有20%左右,甚至更低。