首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》10.6 Trove二次开发

关灯直达底部

随着Trove的不断发展,已经提供了数据库即服务的基本功能,基本上能够满足小型环境的需求。但是海量数据的发展对数据库的容量和安全性能提出了越来越高的要求。Trove是基于OpenStack开发的,上述创建数据库实例的过程可以借鉴过来,根据自身业务的特定需求,对Trove进行二次开发,实现数据库的一些扩展功能。

下面通过一个二次开发实例,讲解如何在原有的Trove基础上,扩充特定的功能。Trove是在OpenStack的基础上开发的,并对外提供公开的源码,如果直接修改源码,需要对系统的实现逻辑及代码原理有深入的了解,需要的开发验证维护工作量都非常大。我们可以从另外层面,通过编写Heat脚本,调用OpenStack和Trove对外提供的接口,实现相应的功能。

1.收集业务需求

得到的需求如下:

1)业务模型需要支持海量数据,并且随着业务的发展,数据库会越来越大,要求数据的存储可扩充。

2)单机数据库无法满足数据的安全性要求,在单数据库节点发生异常时,要有可靠的数据备份。

3)支持海量数据的同时要求支持业务的高并发,单台DB已经无法满足业务的访问性能要求,需要实现数据库的读写分离功能,多个数据库同时对外提供读写服务,提高业务的访问性能。

2.基于Trove需要扩充的功能

1)Trove实现了在云化环境中,自动化创建数据库实例和管理数据库实例的功能。可以在Trove的基础上,根据业务的需求动态生成多个数据库实例,以满足海量数据的存储。

2)Trove实现了手工的数据库备份,并且提供了多种方式。但是无法实现数据库的实时备份,需要在流程中自动生成主备数据库,并提供自动化的配置,根据业务的需求配置数据同步模式,实现主备数据库的数据实时同步。

3)基于第二点数据备份的实现,为了提高数据库系统的并发处理能力,可以通过proxy代理实现数据库的读写分离。多个DB对外提供读操作,主DB提供写操作。

在原Trove的架构上,加入了数据库的主备和读写分离功能,如图10-3所示。

3.具体实现方案

1)增加Manager Server模块,Manager Server和Trove的API Server对接,调用Trove接口生成数据库实例。同时Manager Server和OpenStack对接,通过OpenStack接口自动申请DB Proxy节点。

2)增加新的Horizon用户界面,和Manager Server对接,用户通过界面可以选择创建的数据库类型,包括是否主备复制、主备复制模式、是否需要支持读写分离、数据库实例的配置CPU、内存、存储等信息。Manager Server根据用户选择的实例类型,创建相应的数据库实例和DB Proxy节点。

3)增加Guest Agent模块,和DB节点部署在一起,实现数据库集群的管理。在做数据库镜像时,可以提供多种类型镜像文件,需要数据库集群管理时,则使用包含Guest Agent的DB镜像文件生成数据库实例。

图10-3 主备和读写分离功能

4)新增DB Proxy模块,DB Proxy模块实现读写分离功能。DB Proxy根据SQL类型分析业务请求的SQL,如果是读操作则把请求信息下发到备机数据库实例上;如果是写操作,则把请求信息下发到主数据库实例上,从而实现SQL请求的分发。DB Proxy对外提供外网访问IP,应用程序用这个外网IP访问数据库。

通过上面的二次开发,扩展了Trove原有的数据库基本功能,实现了数据库主备复制和读写分离的功能,从而改变了云化数据库单机DB提供服务的情况,提高了数据库的可靠性和并发性能。我们可以根据自身业务的实际需求,在原Trove的基础上,增加相应的模块,实现更多更具扩展性的云化数据库系统。