基于服务架构的云计算研究及其实现摘要:云计算是一种将计算和存储任务分配到由大量计算机构成的云中的计算模式。在介绍了云计算和基于服务架构的概念和特征之后,提出了一种现实可行的基于服务架构的云计算四层结构。最后描述了基于服务架构的云计算实现过程,并证明基于服务架构的云计算在扩展性和用户透明性方面比网格计算更优。关键词:云计算基于服务的架构终端用户网格计算用户透明扩展性ResearchonService-orientedArchitectureCloudComputinganditsImplementationAbstract:Cloudcomputingisacomputingparadigmthatitassignsthecomputingandstoringtasktothecloudwhichiscomposedbyalargenumberofcomputers.Aftertheintroductionoftheconceptsandcharacteristicsofthecloudcomputingandtheservice-orientedarchitectureinthispaper,itproposesarealisticservice-orientedarchitecturecloudcomputingframeworkwithfourlayers.Intheend,itdescribestheimplementationofthisservice—orientedarchitecturecloudcomputing,andprovesthatservice-orientedarchitecturecloudcomputingisbatterthangridcomputingintheaspectofsealabilityandusers-transparency.Keywords:dondcomputing,SOA,end-user,gridcomputing,users-transparency,sealability1引言随着网络的飞速发展,业务量、数据量以爆炸式的速度增长,导致数据存储中心的成本上升。在这个计算速度要求极高和数据海量爆发的年代,对大部分企业来说,自身计算机设备的性能也许永远无法满足需求,因为企业内部信息的扩张速度远比想象的要快。简单的办法便是采购更多、更先进的设备来保证计算速度和存储容量,但这对于一些本身IT预算就少的企业,不停的更换设备也并不是万全之策,更何况这些越来越多的设备所带来的越来越多的附加费用也是个麻烦。而且就算有足够的资金来购买更多的设备,但随着设备数量的增加,各种存储体系结构之间的差异不断增加,可融合性变差,网络中存储资源难以管理和充分使用。云计算是一种计算模式,它主要是用来解决服务器以及个人计算机之间存储资源共享和数据共享问题,使网络中的存储资源得到充分利用和方便管理,云计算应运而生。2概念介绍2.1云计算定义云是由一系列相互联系并且虚拟化的计算机组成的并行和分布式系统模式。这些虚拟化的计算机动态地提供一种或多种统一化的计算和存储资源。这些资源通过服务提供者和服务消费者之间的协商来流通。基于这样云的计算称为云计算。简单地说,云计算就是指基于互联网络的超级计算模式。即把存储于个人电脑、服务器和其他设备上的大量存储器容量和处理器资源集中在一起,统一管理并且协同工作。2.2云计算主要技术特征各个企业或者研究机构所提出的云计算解决方案共同构成了一个生态系统,从各种已有的云计算技术形态来看,各家的云计算平台虽然各有不同,但是都满足以下技术特征:1)以服务的形式提供计算资源和计算能力。各种计算资源或计算能力通过网络以服务的形式提供给用户使用,这些资源具有不同的类型,处于不同的系统层次,从最底层的CPU、磁盘、网络连接等硬件资源,到整个部署平台或运行环境,再到各种特定于领域的或业务的应用系统。2)支持多租户(multi-tenancy)的网络访问和使用不管所提供的资源处于哪个系统层次,用户都可以通过网络访问和使用,由于是面向多用户的,系统必须提供相应的机制为多个用户分配、维护和管理所需要的资源,这通常在虚拟化、分布式计算、分布式存储等技术的基础上实现。3)按需使用的弹性架构根据需要为用户分配资源,当用户的资源需求增加或者减少时,能以足够快的速度为用户重新分配或释放相应资源,从而提高资源利用率,减小用户的成本。这通常需要某种形式的负载均衡技术实现。4)最小化的管理负担用户只需要很少的配置就可以使用各种计算资源和计算能力,而不需要参与对所使用资源的管理和维护,这需要实现自动的动态资源配置和管理。5)按使用量支付用户根据对资源的使用量支付相应费用,因而需要云计算系统可以对资源的使用情况进行实时的监控和度量。2.3云计算基础技术云计算的一个核心思路是,不管所提供的资源处于哪个系统层次,隐藏系统内部的复杂性,为用户提供尽量便捷的使用接口,减小用户对所用资源的管理和配置负担。用户不需要了解或参与管理云平台的内部机制,只需要关注云平台提供的服务及其使用方式。云计算通常建立在大规模的服务器集群之上,需要针对其所提供的服务形式在服务器集群所构成的分布式计算环境中,充分地组织和管理计算和存储资源,提供面向多租户(Multi-tenancy)的动态资源配置、释放、监控和负载均衡,这主要通过虚拟化、分布式存储和并行计算模型等技术来实现。1)虚拟化技术虚拟化(virtualization)并不是一种新技术,单机版的虚拟化技术已经使用了数十年。传统的虚拟化技术用于将底层物理资源进行抽象,可以通过一个虚拟控制层(VMM,VirtualMonitorMachine)为单个物理机建立多个逻辑映像,以虚拟机(VirtualMachine)的形式提供给上层,各个虚拟机中可以互不干扰地运行不同的操作系统,因而虚拟化技术为云计算提供了一种高效的资源分配机制。在云计算环境中,虚拟化被当做一个意义更加宽泛的核心概念来使用。通过在不同系统层次上对各种资源进行抽象,实现分布式环境下的服务器、存储设备和其他各种硬件资源的封装,当做统一的资源池来提供,从而实现对各种计算资源的灵活配置和管理。这种抽象有两种不同的形式,一种利用传统的虚拟化技术,可以将单个服务器作为多个虚拟化的服务器使用;一种使用集群(Clustering)技术,可以将多个服务器作为单个服务器环境来使用。1.平台虚拟化平台虚拟化允许操作系统或者平台相关的应用运行在给定虚拟系统中。主要有两种类型的系统虚拟化技术:全虚拟化(fullvirtualization),对底层硬件系统进行全模拟,客户机操作系统觉察不到运行在一个虚拟环境中,无需对现有的操作系统做任何修改,例如Type1hypervisors,直接运行在硬件系统之上;类虚拟化(paravirtualization),提供的虚拟化环境与底层硬件系统不完全相同,需要对客户机操作系统进行修改使之适应虚拟环境,例如Type2hypervisors,需要运行在某种传统操作系统之中。2.操作系统虚拟化操作系统级别的虚拟化或分割技术(Partitioning)有助于提高云计算环境的核心安全性,例如SunSolarisContainers技术可以实现为每个应用程序分配一个服务器实例(one-application-per-server),同时在多个应用之间共享物理资源。SolarisContainer允许在单个SolarisOS实例中,为多个应用分配私有的运行环境。3.网络虚拟化云计算要提供弹性的按需使用的架构,在云环境中,当物理设备或虚拟系统的数量增加时,相应的资源分配以及管理的复杂性也会不断增加,因此负载均衡技术变得非常重要。通过网络虚拟化,可以更好地实现动态的资源分配和负载均衡。在服务器集群环境中,负载均衡技术可以在虚拟网络环境下(虚拟的IP地址下)将服务器分组,提供基于资源的服务请求规划和失效恢复(failover)。负载均衡可以在硬件或者软件上实现,基于硬件的负载均衡器(load-balancer)性能更好,但是灵活性比较差,基于软件的负载均衡器则恰恰相反。实际上,通常在硬件基础上编写软件接口来平衡软硬件性能和灵活性上的差别,或者直接使用更多的硬件设备来弥补软件负载均衡的性能不足。4.应用虚拟化应用虚拟化在更高的系统层次进行抽象,典型的例如WEB容器,为WEB应用提供了一个抽象化的运行环境。5.云计算中常用的虚拟化技术有VMware、Xen、KVM等。VMware公司提供了VMwarevSphere、VMwareView、VMwarevCenter、VMwareWorkstation以及VMwareESXServer等多款产品。VMware使用一种叫做二进制翻译(BT,BinaryTranslation)的技术来完成全虚拟。这个技术能让那些非常普通的指令直接执行,不干涉,并提供接近物理机的速度,但会扫描并修改那些有嫌疑的代码,使其无法对虚拟机造成错误的影响。KVM全称是Kernel-basedVirtualMachine,2007年问世,并于当年被集成进Linux内核,成为内核的一部分。KVM只支持全虚拟化,而且需要intel-VT或者AMD-V的支持。KVM使用经过修改的QEMU程序来创建虚拟机。一旦运行后,虚拟机是一个标准的进程,可以使用top、kill、taskset以及类似的工具来管理虚拟机。因为KVM和QEMU的密切关系,所以KVM从QEMU那里继承丰富的磁盘格式支持,包括裸映像(rawimages)、原始QEMU格式(qcow)、qcow2以及VMware格式等。实际上QEMU也是一种虚拟机,KVM只是借用了它的用户空间工具而已。Xen是由剑桥大学计算机实验室开发的一个开源项目。与KVM相比,Xen历史更悠久,发展也更成熟。目前,Xen支持半虚拟和全虚拟两种工作模式,既能工作在32位CPU上也能工作在64位CPU上。Xen在半虚拟工作模式时,客户操作系统需要经过修改才能运行,在CPU有intel-VT或者AMD-V支持的情况下,Xen可以实现全虚拟,客户操作系统便可以不经任何修改运行其上。Xen在工作时将整个系统分成几个部分:XenHypervisor、Domain0、DomainManagementandControl、DomainUPVGuest以及DomainUHVMGuest。Xenhypervisor是对这个软件的最基本的抽象层,向上层提供抽象的硬件。它主要负责针对运行在该硬件设备之上的多个虚拟机的CPU轮转,内存划分的工作。Hypervisor不仅仅对底层硬件设备进行了抽象,而且同时控制着虚拟机的执行。XEN有如下优点:虚拟重新定位:支持云管理系统在几秒钟内动态重新定位虚拟机(外来操作系统),并且不会造成当机。瞬间归档:使“云”能够将未使用的服务器脱机,并且无任何不良影响。随后可以在几秒钟内复原同一虚拟机并使其联机。瞬间重新平衡:使“云”能够将过度使用的虚拟机转移到具有未使用资源(内存、CPU、磁盘)的物理机器上。瞬间部署:使“云”能够在几秒钟内将虚拟服务器联机。根据实施情况,更多的配置或中间件与应用程序供应可能需要更多时间2)分布式存储分布式存储技术用于对分布式环境下的大规模存储空间进行管理,以支持海量数据的存储和使用。用在云计算中的分布式存储技术主要有三种形式,存储非结构化数据的分布式文件系统,和分布式对象存储系统。1.分布式文件系统分布式文件系统将树状文件结构组织在分布式环境中,有如下特征:系统中的错误不再被当做很少发生的异常来处理,而是将其作为常见的情况加以处理。GFS针对由大量的廉价机器组成的系统,在设计时就考虑到系统中总有一些机器会出现错误甚至崩溃,所以实时监控、错误检测、容错以及自动恢复机制被充分考虑;文件块的大小与传统文件系统不同。传统文件系统中,文件块在KB级,当文件非常大的时候文件块太多不容易管理,所以可以适当放大文件块以便提高效率。大部分文件对文件的写操