摘 要: 本文将云计算体系架构划分成核心服务、服务管理和用户访问接口三大体系所组成,然后深入的介绍了云计算的核心服务:IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务)。也对服务管理中的QoS保证机制进行了分析与研究。
关键词:云计算;虚拟化;数据中心;服务质量
1 引言
云计算是继分布式计算、网格计算、对等计算之后的一种新型计算模式。它是在集群计算、效用计算、网格计算以及服务计算的基础上发展而来,同时又是分布式计算、互联网技术、大规模资源管理等技术的融合和发展。其研究和应用是一个巨大的系统工程,涵盖了数据中心管理、资源虚拟化、海量数据处理、计算机安全等重要问题。其主要为用户提供资源租用、应用托管和服务外包等服务。
其服务特点主要有:
1) 弹性服务。其服务规模可以自动调整,以适应业务负载的需求。
2) 资源池化。资源以共享资源池的方式统一管理。
3) 按需服务。以服务的形式为用户提供应用程序、数据存储、基础设施等资源。
4) 服务计费。自动监控用户的资源使用量,并根据资源的使用量收取服务费用。
5) 泛在接入。用户可以利用各种终端设备(如PC、智能手机、笔记本等)随时随地通过互联网访问云计算服务。
云计算体系架构可分成核心服务、服务管理和用户接口这三层,如图1.1所示。其中核心服务层将硬件基础设施、软件运行环境和应用程序抽象成服务。服务管理层为核心层服务提供支持,进一步确保核心服务的可靠性、可用性和安全性。用户访问接口层实现端到云的访问。
图1.1 云计算体系架构
2 云计算核心服务
云计算核心服务通常可以分为三个子层:基础设施即服务(IaaS, Infrastructure as a service)、平台即服务(PaaS, Platform as a service)和软件即服务(SaaS, Software as a service)。下面对这三个子层分别进行详细的讨论。
2.1 IaaS
IaaS层是云计算的基础,而数据中心是IaaS层的基础。通过建立大规模数据中心,IaaS层可以为上层提供海量硬件资源。同时,在虚拟化技术的支持下,IaaS层可以实现硬件资源的按需配置,并提供个性化的基础设施服务。基于此,IaaS层主要研究2个问题:首先是如何建设低成本、高效能的数据中心;其次是如何实现虚拟化技术,实现资源的按需分配。
1)数据中心。
数据中心是云计算的核心,其资源规模与可靠性对上层的云计算服务有着重要的影响。其主要特点有:首先是自治性,即数据中心在发生异常时能自动重新配置,并从异常中恢复,而不影响服务的正常使用。其次是可扩展性,随着数据规模的不断增大,系统能够方便增加新的计算节点。
由于数据中心大规模计算节点的出现,设计一种好的网络拓补结构变得异常的重要。在此我们主要介绍两种网络拓补结构:传统树形结构的网络拓补和PortLand网络拓补结构。
树形结构的网络拓补如图2.1所示。其主要由核心层、汇聚层和边缘层组成。此拓补主要有以下缺陷:首先是可靠性低,若核心层或汇聚层的网络设备发生异常,网络的性能会大幅下降。其次是可扩展性差,由于核心层端口有限,难以支持大规模网络。再次,网络宽带有限,汇聚交换机连接边缘层的宽带远大于其连接核心层的宽带。
图2.1 传统的树型网络拓补
PortLand网络拓补结构如图2.2所示。同样也是由核心层、汇聚层和边缘层组成。其中边缘层和汇聚层可分解为若干Pod,每个Pod含有K台交换机,分属边界层和汇聚层,每层K/2台交换机。Pod内部以完全二分图的结构相连。边缘层交换机连接计算节点,每个边缘层交换机可连接K/2个计算节点,故每个Pod可连接K2/4个计算节点。汇聚层交换机连接核心层交换机,同样每个Pod连接K2/4个核心层交换机。基于PortLand,可以保证任意两点之间有多条通路,计算节点在任何时刻两两之间可无通信阻塞,从而满足云计算数据中心的高可靠性和高宽带的需求。
图2.2 PortLand网络拓补
2)虚拟化技术。
为了实现基础设施服务的按需分配,需要对虚拟化技术有深入的研究。虚拟化技术主要有以下特点:首先是资源分享,通过虚拟机封装用户各自运行的环境,有效实现多用户分享数据中心资源。其次是资源定制,指用户利用虚拟化技术,配置私有的服务器,指定所需的CPU数目、内存容量、磁盘空间等,实现资源的按需分配。再次,可以实现资源的细粒度管理。虚拟化技术是实现云计算资源池化和按需服务的基础,为满足云计算弹性服务和数据中心自治性要求,需要研究虚拟机的快速部署和在线迁移技术。
传统的虚拟机部署分为四个阶段:创建虚拟机;安装操作系统和应用程序;配置主机属性;启动虚拟机。由于该方案部署时间长,无法满足云计算弹性服务的要求。为简化虚拟机的部署过程,于是有学者提出了虚拟机模板技术。虚拟机模板预装了操作系统与应用程序,并对虚拟机设备进行了预配置,这样可以有效减少虚拟机的部署时间。将模板转换成虚拟机需要复制模板文件,当模板文件较大时,需要很大的时间开销。为此,又有学者提出了基于fork思想的虚拟机部署方式。基于虚拟机级的fork,子虚拟机可以继承父虚拟机的内存状态信息,并在创建后即可使用。当部署大规模虚拟机时,子虚拟机可以并行创建,并维护其独立的内存空间,而不依赖于父虚拟机。为了减少文件的复制开销,虚拟机fork采用了“写时复制”技术:子虚拟机在执行“写操作”时,将更新后的文件写入本地磁盘;在执行“读操作”时,通过判断该文件是否已被更新,确定本机磁盘或父虚拟机的磁盘读取文件。虚拟机fork是一种即时部署技术,虽然提高了部署效率,但是通过该技术部署的子虚拟机不能持久保存。
虚拟机在线迁移技术是指虚拟机在运行状态下从一台物理机移动到另一台物理机。它对云计算平台有效管理具有重要意义。首先,它可以提高系统的可靠性,如支持物理机维护和虚拟机运行时备份等操作。其次 有利于负载均衡,当物理机负载过重时,可以通过虚拟机迁移技术达到负载均衡,优化数据中心性能。最后,有利于设计节能方案,通过集中零散的虚拟机,可使部分物理机完全关闭,以达到节能目的。
2.2 PaaS
PaaS层为核心服务层的中间层,它为上层应用提供简单、可靠的分布式编程框架,又需要基于底层的资源信息调度作业、管理数据、屏蔽底层系统的复杂性。随着数据密集型应用的普及和数据规模的日益庞大,PaaS层需要具备存储和处理海量数据的能力,同时也需要资源管理与调度技术以及任务容错机制。
1)海量数据存储技术。云计算的海量数据存储既要考虑存储系统的I/O性能,又要保证文件系统的可靠性与可用性。在此以google的GFS(google file system)为例进行分析。首先,GFS对应用环境做出了如下假设:①系统架构在容易失败的硬件平台上;②需要存储大量GB甚至TB级别的大文件;③文件读操作以大规模的流式读和小规模随机读构成;文件具有一次写多次读的特点;④系统需要有效处理并发的追加操作;⑤高持续I/O宽带比低传输延迟重要。
在GFS中,一个大文件被划分成若干固定大小的数据块并分布在计算节点的本地硬盘,为保证数据的可靠性,每个数据块都保存有多个副本,所有的文件和数据块副本的元数据有元数据管理节点管理。GFS 的优势在于:①由于文件的分块粒度大,GFS 可以存取PB 级的超大文件;②通过文件的分布式存储,GFS 可并行读取文件,提供高I/O 吞吐率;③鉴于上述假设4,GFS 可以简化数据块副本间的数据同步问题;④文件块副本策略保证了文件可靠性。
2)数据处理技术与编程模型。由于PaaS平台部署在大规模硬件资源上,所以海量数据的分析处理需要抽象处理过程,并要求其编程模型支持规模扩展,屏蔽底层细节并简单有效。在此以google的MapReduce为例进行说明。MapReduce是google提出的并行程序编程模型,运行于GFS之上,如图2.3所示。一个MapReduce作业由大量Map和Reduce任务组成,根据两类任务的特点,可以把数据处理过程划分成Map和Reduce两个阶段。在Map阶段,Map任务读取输入文件块,并行处理,然后将处理结果保存到Map任务执行节点上。在Reduce阶段,Reduce任务读取并合并多个Map任务的中间结果。
MapReduce可以简化大规模数据处理的难度:首先,MapReduce中的数据同步发生在Reduce读取Map中间结果的阶段,这个过程由编程框架自动控制,从而简化数据同步问题;其次,由于MapReduce 会监测任务执行状态,重新执行异常状态任务,所以程序员不需考虑任务失败问题;再次,Map 任务和Reduce任务都可以并发执行,通过增加计算节点数量便可加快处理速度;最后,在处理大规模数据时,Map/Reduce 任务的数目远多于计算节点的数目,有助于计算节点负载均衡。但它也存在诸多的缺点:首先是灵活性低,很多问题难以抽象成Map和Reduce操作;其次是MapReduce在实现迭代算法时,效率较低;再次就是在执行多数据集的交运算时效率不高。
图2.3 MapReduce的执行过程
3)副本管理技术。副本机制是PaaS层保证数据可靠性的基础,有效的副本管理策略不但可以降低数据丢失的风险,而且能优化作业完成的时间。如Hadoop采用了机架敏感的副本放置策略,该策略默认文件系统部署在传统网络拓补的数据中心。若放置三个副本,由于同一机架的计算节点间网络宽带高,所以机架敏感的副本放置策略将两个文件放置于同一个机架,剩下的一个副本放置与不用的机架中。这样的策略既考虑了计算节点和机架失效的情况,也减少了维护数据一致性带来的网络开销。
4)任务调度算法与容错机制。由于PaaS层的海量数据处理以数据密集型作业为主,其执行性能受到I/O宽带的影响。为了减少任务执行过程中的网络传输开销,可以将任务调度到输入数据所在的计算节点。因而需要研究面向数据本地性的任务调度。Hadoop以“尽力而为”的策略保证数据本地性,Jin等人设计了BAR调度算法,基于“先均匀分配再均匀负载”的思想,BAR算法在快速求解大规模HTA问题是获得了较好的效果。除了保证数据的本地性之外还需要考虑作业之间的公平调度。研究作业公平调度算法可以及时为即时作业分配资源,使其快速响应。
为了使PaaS平台可以在任务发生异常时自动从异常状态恢复,因而需要任务容错机制。MapReduce的容错机制在检测异常任务时,会启动任务的备份任务。备份任务好原任务同时执行,当其中一个任务顺利完成时,调度器立即结束另一个任务。
2.3 SaaS
SaaS层面向的是云计算的终端用户,提供基于互联网的软件应用服务。典型的SaaS应用如:Google Apps。Google Apps包括Google Docs、Gmail等一系列的SaaS应用,通过将传统的桌面应用程序迁移到互联网,并托管这些应用程序,用户通过web浏览器即可随时随地访问这些应用,而无需下载、安装或维护任何硬件和软件。
3 云计算服务管理
为了使云计算核心服务高效、安全的运行,需要服务管理技术加以支持。服务管理技术包括QoS保证机制、安全与隐私保护技术、资源监控技术、服务计费模型等。其中,QoS 保证机制和安全与隐私保护技术是保证云计算可靠性、可用性、安全性的基础。
3.1 QoS保证机制
云计算不仅要为用户提供满足功能需求的资源和服务,同时还需要提供优质的QoS,以保证应用顺利高效地执行。这是云计算得以被广泛采纳的基础。首先,用户从自身应用的业务逻辑层面提出相应的QoS需求;为了能够在使用相应服务的过程中始终满足用户的需求,云计算服务提供商需要对QoS水平进行匹配并且与用户协商制定服务水平协议;最后,根据SLA 内容进行资源分配以达到QoS保证的目的。针对以上3 个步骤,本节依次介绍IaaS、PaaS和SaaS 中的QoS 保证机制。
图3.1 QoS保证机制
1)IaaS层的QoS保证机制。IaaS 层可看作是一个资源池,其中包括可定制的计算、网络、存储等资源,并根据用户需求按需提供相应的服务能力。IaaS 层所关心QoS 参数主要可分为两类:一类是云计算服务提供者所提供的系统最小服务质量,如服务器可用性及网络性能等;另一类服务提供者承诺的服务响应时间。
2)PaaS/SaaS层的QoS保证机制。在云计算环境中,PaaS 层主要负责提供云计算应用程序(服务)的运行环境及资源管理。SaaS提供以服务为形式的应用程序。与IaaS 层的QoS 保证机制相似,PaaS 层和SaaS 层的QoS 保证也需要经历3个阶段。PaaS层和SaaS 层QoS 保证的难点在第3 阶段(资源分配阶段)。由于在云计算环境中,应用服务提供商同底层硬件服务提供商之间可以是松耦合的,所以PaaS 层和SaaS 层在第3 阶段需要综合考虑IaaS 层的费用、IaaS 层承诺的QoS、PaaS/SaaS
层服务对用户承诺的QoS 等。
参考文献:
罗军舟,金嘉晖等. 云计算:体系架构与技术. 通信学报,2011.