《云计算软件工程:云软件自动生成原理及方法》:
第0章 导言
2006年3月,Amazon(亚马逊)推出了弹性计算云服务。同年8月,Google首席执行官EricEmersonSchmidt(埃里克施密特)在搜索引擎大会(SESSanJose)上首次提出了云计算的概念。此后云计算快速地在工业界和学术界发展起来,并迅速得到了认可和大力推广。它是继20世纪80年代大型计算机到客户端/服务器(client/server)的大转变之后的又一次巨变,也是进一步对浏览器/服务器(browser/server)的一次大扩展和大进步,使在移动过程中感受各类便捷的应用成为现实,使处于Internet中的任何资源和终端都可以集成在"云"中;从而使需求用户不再需要了解"云"中基础设施的细节,不必具有相应的专业知识,也无须直接进行控制[1-6],就可以弹性、伸缩使用基于Internet的公有资源,同时满足安全要求且不易涉及隐私的私有资源。
目前,云计算的概念没有统一的定义,但它是一种新兴的商业计算模型,它是对分布式计算(distributedcomputing)、并行处理(parallelcomputing)、网格计算(gridcomputing)、服务计算(servicecomputing)的进一步扩展,以构建下一代计算机网络[6,7]。因此,不同业界根据自己的要求对云计算给出了自己的定义,但它们离不开云计算是基于Internet的、是弹性可伸缩的,即云计算描述了一种基于Internet的新的信息技术服务增加、使用和交付模式,通过移动互联网来提供动态易扩展且经常是虚拟化的资源[8]。
1.几种常见的云计算定义
迄今为止,云计算还没有一个统一的定义描述;站在不同的角度所定义、理解的云计算是不同的,而且对云计算所表达的范围也有不同的表述,下面是几种常见的定义。
1)Wikipedia
云计算是一种基于Internet的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备。即云计算是一种通过Internet以服务的方式提供动态可伸缩的虚拟化资源的计算模式。
2)IBM
云计算通常简称为"云",是一种通过Internet(含移动Internet)按需交付计算资源(从应用到数据中心都属于计算资源)和按使用付费的基础架构。并且有如下特征[9]。
(1)富有弹性的资源:能快速轻松地扩大或缩小规模,以满足用户的需求。
(2)按使用付费:计量服务的使用情况,只需为所用的服务付费。
(3)自助服务:使用自助服务可访问用户需要的所有信息技术资源。
3)NIST(美国国家标准与技术研究院)
云计算是一种模式,把实现随时随地、方便的、按需分配的网络访问赋予一个共享的,可以配置的计算资源池。这些计算资源可以快速地分配和释放,而只需极少的管理工作和服务提供商的互动,从而使得云计算有下列特征[10]。
(1)随需自助服务,随时随地用任何网络设备访问。即消费者在需要网络资源的时候,不必与服务提供商人员接触,就直接实现单方面、自动地获得计算能力,如服务器时间、网络和存储。同时,用户还可以通过基于网络的标准机制访问计算能力,这些标准机制提倡使用各种异构的胖/瘦客户端(移动终端、平板电脑、笔记本计算机和个人工作站)。
(2)多人共享资源池,实现快速重新部署灵活度,即服务提供商的网络资源使用多租户模式来服务多个消费者,并依据用户的需求,将不同的物理和虚拟资源动态地分配和再分配给需求者。同时它还有位置无关的特性,也就是说用户通常不能掌控或者了解资源的具体物理位置,不过用户可以在更高层次的抽象层指定位置(国家,省或者数据中心)。其典型的资源包括存储、处理、内存和网络带宽。
(3)可评测的服务,即通过利用与服务匹配的抽象层次的计量能力(如存储、处理、带宽和活跃用户账号数),云系统自动控制和优化资源的使用。资源使用可以被监控、控制和报告,提供透明度给服务提供商和服务使用者。
(4)基于虚拟化技术快速部署资源或获得服务。
(5)减少用户终端的处理负担,降低了用户对于信息技术专业知识的依赖。
(6)实现基于Internet的快速弹性能力,即弹性的提供或者释放计算能力,以快速伸缩匹配等量的需求,并且在某些情况下,这种伸缩是自动的。而且对于消费者,这种可分配的计算能力通常是无限的,并且可以在任何时候自助任何数量。
4)国内云计算专家刘鹏[11]
云计算将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算能力、存储空间和各种软件服务。
2.云计算的多租户(项目)模式
多租户/多租赁(multitenancy/tenant)是云计算的主要特征之一,是实现云的可伸缩和弹性的重要途径。在云计算环境中,它是一种软件构架,即在一台服务器上运行单个应用实例和按需的项目,为多个租户提供云服务。并且在这种构架上,应用程序设计成将数据、配置进行虚拟化分区后,能使每个租户根据自己的需求定制自己私有的软件实例(applicationinstance),也可以供多个组织使用,实现共享同样的应用程序,即应用程序的虚拟化,从而让多个租户共同使用同一个软件实例,但要确保每一个租户的数据、配置等的安全和隔离。也就是说,多租户模式下需要使每一个租户都有自己的一套完整的应用程序、中间件、操作系统和基础构架等,使其与其他租户完全隔离,但可以将数据共享在同一个物理存储、操作系统、中间件和应用程序上。从而构成一种独特的多租户数据中心(大数据)、服务、事务以及基础构架和应用程序运行模式。其中数据是多租户的核心,所面临的安全、容灾挑战也巨大,因此需要通过专业的供应商提供和维护;服务是在软件应用程序中构建的并直接通过REST(RepresentationalStateTransfer)接口和WSDL(WebServicesDescriptionLanguage)接口访问服务终端,从而建立一种多租户的和SOA(ServiceOrientedArchitecture)的应用程序;云事务则用来验证每个应用程序的多租户请求,并实现应用程序中的认证和授权以提高多租户的可伸缩性、可维护性和重用性;而基础构架是多租户应用的支撑和载体,是应用程序运行在PaaS和SaaS上的基础。
在多租户具体实现方面,目前JavaEE7上已初步提供了部分多租户开发能力,并在JSR342、JSR338、JSR340、JSR343和JSR345中已有体现,如表0-1所示,即对PaaS环境中的同一个PaaS能够被多个租户使用,并且每个租户使用不同的软件实例(SaaS)和资源共享。
……
展开