中国联通研究院 北京 100032
数据库即服务是一种基于云的结构化数据存储方式,它依托于传统的数据库技术,在此基础上将数据库资源抽象成标准服务的形式提供给用户。数据库即服务具备可扩展、灵活适配和按需分配等特征,用户可以通过界面简单、快捷、自服务化地获取数据库资源,省去了复杂的数据库配置工作。
典型的数据库即服务架构需要支持如下功能。1)面向租户的、按需弹性配置的、用户自服务的数据库实例配置与管理功能;2)具备可选的、稳定的SLA服务标准和运行监控维护能力;3)具备精细化、细粒度的资源使用量计量与计费能力。除上述必备能力外,一个完善的DBaaS架构还应具有较为完备的安全机制、自动资源管理和综合性能规划等功能,并且能够适配各种不同的接入设备。DBaaS所具备的一些特性也是传统数据库服务架构自身已具备的,因此,不能脱离传统数据库技术而独立存在,其侧重点在于面向对数据库功能的封装和创新。
数据库作为一种有效管理结构化数据的工具,得到广泛应用。然而,应用数据库需要大量的配置和复杂的维护工作,这些成为数据库应用中的共性问题[1]。另外,在数据库设计时往往遵循峰值性能模型,按照峰值容量来配置可用性,而忽略了通常数据库的使用情况,导致客户前期需要为数据库资源投入巨额成本。
通过采用数据库即服务即可较为轻松地解决以上问题,数据库及服务的优势就在于提供一个模板化、界面化、可弹性扩展的数据库服务平台。采用数据库即服务方案可以降低客户首次投入成本,满足客户多变的需求,不仅使一些小微企业拥有数据库资源的所有权,而且可以缩短系统部署的周期,降低企业IT的门槛。
数据库即服务在推广过程中,也存在着一定问题,如:网络资源保障、交付管理等。由于DBaaS是基于云的服务,对网络依赖程度高,如果最终用户、网络提供商、数据库服务提供商之间的任何一点网络出现故障,都可能会导致数据库即服务无法交付。另外,如果在用户与数据库服务提供商之间还有第三方系统集成商,也可能会使得服务交付的流程变得复杂和难以管理。
尽管数据库即服务在推广过程中还存在诸多不确定因素,但随着中国宽带计划和云服务的高速发展,数据库即服务会迎来它的快速增长期。
OpenStack是一个云管理平台项目,旨在为公共云及私有云的建设与管理提供开源软件实现。Openstack既是一个社区,又是一个软件项目。它拥有着众多支持者,其中包括超过180家企业和400多位开发人员。OpenStack拥有近55万行代码,这些代码分别来自Openstack核心项目、孵化项目、支持项目等多种类型的内部项目。OpenStack包括以下五个相对独立的核心组件[2]。
1)Nova:虚拟机计算控制器,用于对虚拟机实例的生命周期进行管理。
2)Glance:提供了一个虚拟磁盘镜像的目录和存储仓库,可提供对虚拟机镜像的存储和检索。
3)Swift:提供的对象存储服务,支持文件的存储或检索,类似于Amazon S3。
4)Keystone:为OpenStack上的所有服务提供身份验证和授权。
5)Horizon:为OpenStack的所有服务提供一个基于Web的模块化的UI界面。
除了上述核心组件意外,Openstack还包括如下非核心组件。
1)Ceilometer:为OpenStack的数据采集(监控数据、计费数据)的唯一基础设施,将采集到的数据提供给监控、计费、面板等项目使用。
2)Heat:一套业务流程平台,旨在帮助用户更轻松地配置以OpenStack为基础的云体系。利用Heat应用程序,开发人员能够在程序中使用模板。
3)Trove[3]:目前还仅是一个Openstack的孵化项目。它是Openstack的数据库即服务组件,完全运行在Openstack平台上。Trove的设计目标是提供一个可伸缩、高可用的数据库即服务能力,同时提供关系型和非关系型两种数据库引擎,以完善和扩展OpenStack开源框架的能力。借助Trove,云计算平台的用户可以快速有效地生成关系型数据库实例,不仅省去复杂的数据库配置和管理工作,而且可以通过Trove同时管理多个数据库实例,从而能够大大降低运维成本。
当前,Trove项目还在孵化阶段,致力于实现高可用的资源隔离和数据库实例管理工作,如数据库实例的部署、配置、维护、备份、恢复和监测[4]。同时,Trove运行在Nova的实例中,生成单租户的数据库实例。Trove与Openstack组件通过API实现交互,所以Trove不依赖于Nova的配置,Trove的目标功能架构图[5]如图1所示。
图1 Trove的目标功能架构图
Trove采用Share Nothing的消息架构[5],它的所有组件之间的消息通信都通过消息总线来完成,因此,Trove组件可以运行在不同的服务器上。这一点和Nova非常相似。消息总线接受来自用户的Http请求,将请求转换并转发给相应组件后,请求将被异步执行。Trove的主要组件包括API Server、Message Bus、Task Manager、Guest Agent、Conductor等,其主要功能与相互关系概述如下。
1)API Server:API负责与Guest Agent和Task Manager这两个组件进行通信,以指挥和控制Guest Agent和数据库实例。API北向提供Http Web服务接口,以处理认证、鉴权和数据库基本的控制功能。API与Task Manager组件的通信,均采用异步的方式执行复杂的任务。而API与Guest Agent的通信,均采用同步的方式执行简单的任务,如检索MySQL用户列表。API本身不处理复杂的任务,它的工作是接受、验证、转换请求,并将请求转发给Task Manager或Guest Agent。
2)Message Bus:云平台与Trove之间的双向交互(Http请求)均通过多API节点实现,而API与Guest Agent和Task Manager之间的消息队列的调度和管理任务由Message Bus承担。
3)Task Manager:负责对数据库实例进行生命周期管理,如创建数据库实例等。另外,负责对数据库的性能等进行管理。由于同时管理多个数据库实例,Task Manager采用流式的处理过程。
4)Guest Agent:执行具体的数据库运行维护管理任务,对数据库本身进行操作。每一个数据库实例都拥有一个自己的Guset Agent,并且数据库类型不同,Guset Agent也不同。
5)Conductor:负责从Guest Agents收集状态信息,然后将其更新到Trove的后端数据库。有了Conductor,guest agents不需要直接与后端数据库相连,Conductor通过消息总线监听RPC消息,并执行相关操作。
OpenStack目前的最新发布版为Icehouse版,简称I版,在这一版本中,用户可以通过Trove创建一个数据库服务实例。在这个实例里,用户可以同时创建和管理多个数据库。需要指出的是,OpenStack I版的Trove组件仅支持对MySQL数据库的创建和管理。
本文后续将基于Openstack I版本中Trove组件,对Trove与中国联通自主研发沃云平台的数据库即服务展开对比分析。
沃云是中国联通自主研发的云服务运营管理平台。联通的沃云平台聚焦于云基础能力、云引擎能力和云应用三个层面。云基础能力涵盖计算、存储、网络等IaaS层基础资源能力服务;云引擎能力涵盖数据库即服务、存储即服务、中间件即服务等PaaS层服务;云应用涵盖创新业务应用在线开发、测试、部署、监控等全生命周期服务,以及安全防护、监控计量、用户管理、资源管理等业务支撑服务。它一方面满足新技术试验和测试的需求,另一方面为创新业务孵化和其他业务系统提供云计算服务。
沃云的核心在于两大资源引擎。1)PaaS资源引擎:建设和管理ESB、中间件、数据库等平台级资源,并结合沃云平台的开发框架和测试框架将应用的开发、测试、验证、生产不同环节发挥支撑和管理作用,实现对应用开发、测试、部署、运行的全生命周期支持。2)IaaS资源引擎:以IT资源为中心实现各类基础设施资源的池化管理,并提供统一的运维管理和能力提供接口。实现对基础设施资源的统一管理和调度,为沃云业务及其上承载的各种创新业务提供基础资源能力支撑。
沃云的数据库即服务组件作为PaaS资源引擎的一个关键组成部分,提供面向多租户的统一数据库访问服务,屏蔽底层的异构数据库架构,为上层应用提供简单方便的数据库访问接口,将应用和数据库隔离开来,降低耦合性,增强系统的灵活性和健壮性,增强数据访问控制能力。沃云的数据库即服务组件使大数据实现标准化的全局存储、共享、处理及多样化服务态的访问。其功能架构及集成关系图如图2所示。
沃云的数据库即服务组件包括三个部分。
1)数据访问组件:提供数据库、数据的统一访问,管理和维护路由信息,维护数据对象和数据库对象的映射关系。对上层应用隐藏了数据库架构和数据分布的细节。包括以下主要模块。
图2 沃云数据库即服务功能架构及集成关系图
①数据访问模块:通过接口封装形式,隐藏了数据库的细节特性,仅通过接口形式提供统一的数据访问接口,包括数据接口、数据对象访问接口和元数据访问接口,如REST风格的Web Service接口、JPA、JDBC的封装接口。同时,还提供多种数据结果集形式,如JSON、XML或者Protocol Buffer等。
②监控管理模块:负责监控数据访问组件性能参数和SQL查询性能。可以设置监控的心跳间隔时间和需要监控的参数(CPU使用率、连接数量、吞吐率)。
③路由模块:负责管理维护路由信息,维护数据对象和数据库表对象的映射关系,支持访问分发功能,正确定位数据库实例。
④解析模块:负责数据库访问协议、数据访问协议、元数据访问协议的解析,SQL语句的解析和转译。
⑤负载均衡模块:通过对不同数据库服务的负载监控,及时发现性能瓶颈,并保持对应用透明的数据访问和数据库水平扩展服务能力。
⑥读写分离模块:支持应用透明的自动读写分离操作,在不经任何应用代码修改或应用配置的情况下,直接支持应用的读写分离操作。
2)数据管理组件:监控、管理和协调数据库即服务内部资源和组件(包含数据访问组件和数据库群集)的工作,提供沃云平台通用管理接口的实现,包括以下主要模块。
①数据管理组件接口模块:按照沃云管理平台约定的平台监控规范、平台管理规范进行Web服务封装。
②服务注册模块:负责数据库即服务的组件和服务在沃云平台的企业服务总线(ESB)组件中进行注册。
③访问组件集群监控管理模块:监控和管理数据库即服务中的访问组件集群和仲裁访问组件的工作状态。基于对组件集群的分布式设计,可以对整个组件集群进行逻辑群组的划分和管理,保证了水平可扩展性。
④数据库集群监控管理模块:负责数据库集群及其之间关系的监控和管理。
3)管理平台界面:提供数据库即服务的人机交互界面和运维管理平台,用于数据库服务的生命周期管理和运维工作。
沃云平台历经6年迭代演进,目前已具备多租户支持、数据库资源池化、数据库能力多层次弹性扩展等功能特性。
从数据库实例的管理角度对比,Openstack I版中的Trove组件与当前的沃云数据库即服务均支持对单一MySQL数据库实例的创建、查看和删除操作。然而,二者在主要功能上存在差异。
首先,沃云的数据库即服务平台提供了生成MySQL主从架构的模版,可以通过界面自动化的生成一主一从或者一主多从的MySQL数据库集群,而这些功能在Openstack Trove中只能通过手工的配置来实现。
其次,沃云的数据库即服务平台提供了较为完善的、界面化的数据备份功能和数据库之间的复制功能,支持动态的配置复制规则或备份规则,这些功能在Trove中尚不完善,部分功能还必须通过手工配置的方式实现。
再次,沃云的数据库即服务平台可以通过界面查看到底层数据库运行、数据库连接、数据访问状况、数据复制状况以及平台自身的系统运行状况等的状态和性能数据,可以查询数据库元数据、数据库监控和计量等数据,这些功能Trove本身并不具备,但Openstack的监控与计量组件Ceilometer部分地弥补了Trove的缺失功能。
同时,需要指出的是,沃云的数据库即服务平台和Openstack的Trove都以同时提供关系型和非关系型两种数据库引擎为设计目标,但目前都没有提供非关系型数据库的服务能力。
综上可知,Trove作为OpenStack开源项目中的数据库即服务组件,部分功能目前尚未成熟,同时,也未通过生产系统的大规模部署验证,但随着Openstack社区的不断壮大,Trove有望逐步成为Openstack的核心项目,朝着更加完善的架构、更多类型的数据库支持方向演进。同时,为满足海量数据和高并发的在线交易处理和分析型应用等联通内部支撑业务系统的生产需求,联通自主研发的沃云数据库即服务平台将向支持分布式数据库中间层、列式存储数据库集群的方向演进,二者将在未来形成协同发展,互为补充的和谐关系。
[1]Robert Sheldo.数据库即服务的利与弊[EB/OL].(2013-03-06)[2014-09-28].http://www.searchdatabase.com.cn/showcontent_71086.htm
[2]浅谈OpenStack与KVM的区别与联系[EB/OL].(2013-01-08)[2014-09-28].http://os.51cto.com/art/201301/376569.htm.
[3]CSDN.Openstack trove探究[EB/OL].(2014-04-20)[2014-09-28].http://blog.csdn.net/cloudresearch/article/details/24159279
[4]麦子迈.DBaaS与Trove[EB/OL].(2013-07-28)[2014-09-289].http://www.wzxue.com/dbaas%E4%B8%8Etrove/
[5]Openstack Foundation.TroveArchitecture[EB/OL].(2013-08-14)[2014-09-28].https://wiki.openstack.org/wiki/