7.2.1 云计算简介
云计算发展新趋势
1.云计算
云计算(Cloud computing)是以互联网为基础衍生出的一种新型计算模式,在这种计算模式下,支持共享的软件资源和硬件资源可以通过网络提供给远端的计算机或者其他终端设备。在早期,云计算也被称为分布式计算,随着云计算的发展,我们现在所说的云计算已经不单单是分布式计算一种形式,而是结合了分布式计算、热备份冗杂、并行计算、网络存储、负载均衡、效用计算和虚拟化等计算机技术的一种计算模式。
图7.3为云计算架构图。
图7.3 云计算架构图
云计算可分为显示层、中间层、基础设施层和管理层四层结构,各层的主要功能如下。显示层:将数据内容以美观舒适的方式展现给用户。中间层:为基础设施层提供服务,并将服务用于支撑显示层。基础设施层:连接存储数据库,为中间层提供计算和存储等资源。管理层:给上述三层提供管理和维护技术,协调处理三层的运行。
2.云计算的服务模式
美国国家标准和技术研究院定义了云计算的三种服务模式:IaaS模式、PaaS模式以及SaaS模式。三种模式分别对应云计算架构中的基础设施层、中间层以及显示层。
(1)软件即服务模式(SaaS)
SaaS是一种通过Internet提供软件的模式,用户无须购买软件,而是向提供商租用基于Web的软件来管理企业经营活动。相对于传统的软件,SaaS解决方案有明显的优势,包括较低的前期成本和便于维护、快速展开使用等。SaaS是企业为提高自己的影响力,增加用户黏度而做出的一种尝试。
SaaS模式与传统许可模式软件有很大的不同,它是未来管理软件的发展趋势。相较传统服务方式而言,SaaS具有很多独特的特征:①多租户特性,SaaS通常基于一套标准软件系统来为成百上千的不同租户提供服务;②互联网特性,SaaS通过互联网为用户提供服务;③服务特性,考虑服务合约的签订、服务使用的计量、在线服务质量的保证等问题;④按需付费特性,用户可以根据需求按需订购软件应用服务;⑤开放性,平台提供应用功能的集成、数据接口的集成、组件的集成;⑥成本低,客户只需要支付个人计算机和互联网服务所需的费用。Saas云如图7.4所示。
图7.4 SaaS云
基于SaaS模式的软件一般比较庞大,安装、使用以及运维等方面的操作都比较复杂,并且这些软件单独购买时价格比较昂贵,我们常用的Office 365等办公软件以及ERP、CRM等工程软件都属于SaaS这一模式下的软件。此外,基于SaaS模式的软件通常是以企业用户为主要应用对象的,这就要求软件需要具有一定的协同能力,具备文档的协同处理、屏幕共享、邮件系统、会议管理等功能。而对于需要实时处理的业务场景如飞行控制、工业自动化等场景,基于SaaS模式的软件通常不能很好地适配。
(2)平台即服务模式(PaaS)
PaaS模式为开发人员提供通过全球互联网构建应用程序和服务的平台,PaaS是SaaS的发展。PaaS模式为开发、测试和管理软件应用程序提供按需开发的环境。PaaS云如图7.5所示。
图7.5 PaaS云
常见的PaaS平台有:Google的Google App Engine平台、微软的Windows Azure平台、Salesforce.com PaaS的Force.com IBM Bluemix平台、新浪的Sina App Engine以及百度的Baidu App Engine平台,此外还有一些开源平台如Cloud Foundry等。
PaaS平台的优势:友好的开发环境,丰富的服务,精细的管理和控制,强弹性——弹性计算层,高可靠性,多租户机制能够提供一定的可定制性来满足用户特殊需求,整合率高。目前,PaaS 2.0主要使用kubernetes(k8s)为技术框架,采用容器技术(Docker)来实现部署运行。
(3)基础设施即服务模式(IaaS)
IaaS通过互联网提供按需软件付费应用程序,云计算提供商务托管和管理软件应用程序,允许其用户连接到应用程序并通过全球互联网访问应用程序。IaaS云如图7.6所示。
图7.6 IaaS云
IaaS把IT基础设施作为一种服务,通过网络来对外提供。在这种服务模型中,用户不用自己构建一个数据中心,而是通过租用的方式来使用基础设施服务,包括服务器、存储和网络等。在使用模式上,IaaS与传统的主机托管有相似之处,但是在服务的灵活性、扩展性和成本等方面IaaS具有很强的优势。
IaaS包括网络和通信系统提供的通信服务、服务器设备提供的计算服务、数据存储空间提供的存储服务、操作系统、通用中间件和数据库等基础软件服务。通常IaaS提供商把几个IaaS进行组合,以产品目录的形式告知IaaS使用者能够提供何种产品。
关于公有云IaaS服务商,国内的主要有阿里云、腾讯云、UCloud、天冀云、首都在线、青云等云服务商;国外的主要有亚马逊网络服务(AWS)、微软、谷歌、Century Link、IBM(Soft Layer)、Vmware等云服务商。
IaaS的优势:用户免部署与维护,经济性——对于用户和服务提供者,开放标准——跨平台,灵活迁移,支持应用范围广泛,伸缩性强。
IaaS云的发展阶段如图7.7所示。
图7.7 IaaS云的发展阶段
3.云计算的部署方式
对于云的分类,NIST认为云有两种类型——内部云和外部云,以及四种部署模型——私有云、社区云、公共云、异种云。维基百科认为云可分为私有云、公共云和异种云。下面以维基百科的分类来进行详述。
①私有云或企业云(Private Cloud或Enterprise Cloud):主要是大型企业内部拥有的云计算数据中心,如银行、电信等行业用户以及关注数据安全的用户。大型企业的IT部门无需将业务完全转给公共云供应商,它们会保留原有系统,但新增系统将选用基于云计算的架构。
②公共云(Public Cloud):云计算基础设施供应商拥有大量的数据中心,为中小企业提供云平台和云应用,即通常所指的公共云供应商,为社区服务的公共云可被视为社区云,专门为某个企业服务的云可被视为托管云。
③异种云或联邦云(Hybrid Cloud或Federal Cloud):提供云间的互操作接口,各种云的集合体,如VMWare UCloud、Open Nebula。
4.云计算网络架构中的关键技术
(1)虚拟化技术
虚拟化技术(Virtualization)和分区技术(Partition)紧密结合在一起,从20世纪60年代UNIX诞生起,虚拟化技术和分区技术就开始发展,并且经历了“硬件分区”→“虚拟机”→“准虚拟机”→“虚拟操作系统”的发展历程。最早的分区技术诞生自人们想提升大型主机利用率的需求。比如在金融、科学等领域,大型UNIX服务器通常价值数千万乃至上亿元,但是实际使用中多个部门却不能很好地共享其计算能力,常导致需要计算的部门无法获得计算能力,而不需要大量计算能力的部门占有了过多的资源。这个时候分区技术出现了,它可以将一台大型服务器分割成若干分区,分别提供给生产部门、测试部门、研发部门以及其他部门。
1)硬件分区技术
图7.8 硬件分区技术
硬件分区技术(如图7.8所示)是指硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在多个系统实例,同时启动了多个操作系统。这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,如今对资源进行划分的颗粒性能已经远远提升,例如在IBM AIX系统上,对CPU资源的划分颗粒已经可以达到0.1个CPU量级。这种分区方式在目前的金融领域,比如银行信息中心得到了广泛的采用。
2)虚拟机技术
虚拟机技术(如图7.9所示)不再对底层的硬件资源进行划分,而是部署一个统一的Host系统。在Host系统上,加装了Virtual Machine Monitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终,用户的应用程序将运行在Guest操作系统中。这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执行,造成了性能的损耗,以上特点使其更适用于实验室等特殊环境。虚拟机技术的代表产品有EMC旗下的VMware系列、微软旗下的Virtual PC/Server系列等。
3)准虚拟机技术
为了改善虚拟机技术的性能,一种准虚拟机(Para-Virtualizion)技术(如图7.10所示)诞生了。这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统同时启动,由Xen Hypervisor来进行资源调配。在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的虚拟机技术,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了VT和Pacifica虚拟技术,将虚拟指令加入到CPU中,使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU特有的指令集进行相应的转换操作。
图7.9 虚拟机技术
图7.10 准虚拟机技术
4)操作系统虚拟化技术
操作系统虚拟化技术以SWsoft的Virtuozzo/Open VZ和Sun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而Open VZ是以Virtuozzo为基础的开源项目。它们的特点是由一个单一的节点运行唯一的操作系统实例,通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(VE,Virtual Environment),也被称为虚拟专用服务器(VPS,Virtual Private Server)。在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。
(2)分布式存储和计算
分布式存储系统(如图7.11所示)将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
图7.11 分布式存储系统
分布式存储和计算的关键技术主要包括以下几点。
1)元数据管理
在大数据环境下,元数据的体量也非常大,元数据的存取性能是整个分布式文件系统性能的关键。常见的元数据管理可以分为集中式元数据管理架构和分布式元数据管理架构。集中式元数据管理架构采用单一的元数据服务器,实现简单,但是存在单点故障等问题。分布式元数据管理架构则将元数据分散在多个结点上,解决了元数据服务器的性能瓶颈等问题,并提高了元数据管理架构的可扩展性,但实现较为复杂,并引入了元数据一致性的问题。另外,还有一种无元数据服务器的分布式架构,通过在线算法组织数据,不需要专用的元数据服务器。但是该架构对数据一致性的保障很困难,实现较为复杂,且文件目录遍历操作效率低下,并且缺乏文件系统全局监控管理功能。
2)系统弹性扩展技术
在大数据环境下,数据规模和复杂度的增加往往非常迅速,对系统的扩展性能要求较高。实现存储系统的高可扩展性首先要解决两个方面的重要问题:元数据的分配和数据的透明迁移。元数据的分配主要通过静态子树划分技术实现,后者侧重数据迁移算法的优化。此外,大数据存储体系规模庞大,结点失效率高,因此还需要具有一定的自适应管理功能。系统必须能够根据数据量和计算的工作量估算所需要的结点个数,并动态地将数据在结点间迁移,以实现负载均衡;同时,当结点失效时,数据必须可以通过副本等机制进行恢复,不能对上层应用产生影响。
3)存储层级内的优化技术
构建存储系统时,需要基于成本和性能来考虑,因此存储系统通常采用多层具有不同性价比的存储器件组成存储层次结构。大数据的规模大,因此构建高效合理的存储层次结构可以在保证系统性能的前提下,降低系统能耗和构建成本。利用数据访问局部性原理,可以从两个方面对存储层次结构进行优化。从提高性能的角度,可以通过分析应用特征来识别热点数据并对其进行缓存或预取,通过高效的缓存预取算法和合理的缓存容量配比,可以提高访问性能。从降低成本的角度,采用信息生命周期管理方法,将访问频率低的冷数据迁移到低速廉价的存储设备上,可以在小幅牺牲系统整体性能的基础上,大幅降低系统的构建成本和能耗。
4)针对应用和负载的存储优化技术
传统数据存储模型需要支持尽可能多的应用,因此需要具备较好的通用性。大数据具有大规模、高动态及快速处理等特性,通用的数据存储模型通常并不是最能提高应用性能的模型。而大数据存储系统对上层应用性能的关注远远超过对通用性的追求。针对应用和负载来优化存储,就是将数据存储与应用耦合。简化或扩展分布式文件系统的功能,根据特定应用、特定负载、特定计算模型对文件系统进行定制和深度优化,使应用达到最佳性能。这类优化技术在谷歌、Facebook等互联网公司的内部存储系统上管理超过千万亿字节级别的大数据,能够达到非常高的性能。
(3)云资源管理技术
1)OpenStack
目前最热门的云资源管理技术之一当属OpenStack技术。OpenStack最早是美国国家航空航天局和Rackspace在2010年合作研发的一个开源的云计算管理平台项目,它支持几乎所有类型的云环境。OpenStack的设计理念是简单、可大规模扩展、接口丰富、标准统一。OpenStack旨在为公共及私有云的建设与管理提供软件,OpenStack系统或其演变版本目前已经被广泛应用在各行各业,包括自建私有云、公共云、租赁私有云及公私混合云。OpenStack的主要用户包括思科、贝宝(Paypal)、英特尔、IBM、99Cloud、希捷等公司。
OpenStack平台是采用Python语言编写的,遵循Apache开源协议。和Ubuntu相同,OpenStack平台每半年更新一个新的版本。相较于其他的云管理平台,如CloudStack,OpenStack更轻量化,并且运行效率更高。OpenStack的框架图如图7.12所示。
图7.12 OpenStack的框架图
OpenStack的核心组件包括:①Nova,OpenStack的执行部件,管理虚拟机的整个生命周期,包括创建、运行、挂起、调度、关闭、销毁;②Neutron,管理网络资源,提供一组应用编程接口(API);③Swift,OpenStack的数据库,把数据存储在多台计算机上,以确保数据的安全性和完整性;④Cinder,管理块设备,为虚拟机管理SAN设备源;⑤Keystone,为其他服务提供身份验证、权限管理、令牌管理及服务名册管理;⑥Glance,存取虚拟机磁盘镜像文件。
此外OpenStack还包括一些可选组件,感兴趣的读者可以自行查阅。
2)其他的一些云管理工具
CloudStack工具:思杰(Citrix)收购CloudStack后让其开源,并将其捐献给Apache基金会。当社区版趋于稳定时,思杰公司及时把它转化为服务收费版Cloud Platform。
Eucalyptus工具:是一个基于Linux的模块化的软件架构,在企业现有的IT基础架构中部署可扩展的高效私有云或混合云。