基于ZeroMQ的民航空管数据库同步软件设计和应用

2021-09-10 19:59张翰文
无线互联科技 2021年6期

张翰文

摘 要:文章针对广域网架构下的多数据副本的数据一致性问题,提出了基于ZeroMQ及增量数据抽取的同步方案,研制了同步软件UltraSync。在中国民航流量管理系统的研制与应用中,UltraSync能高效地同步中心节点数据分布在全国的二级分系统,有效解决了核心数据的分布式存储问题。

关键词:数据同步;消息中间件;分布式数据存储

1 相关工作

1.1 数据同步软件概况

在传统数据中心建设中,核心系统数据一般保存在磁盘阵列,通过磁盘阵列的镜像复制技术或存储虚拟化技术进行存储设备间的同步[1-2],可以达到同城/异地数据库双活,进而达到系统的容灾故障转移和自动化运行。存储设备层的同步,需要有硬件存储设备支持该特性,且对系统间的网络要求较高,如系统间需要配备裸光纤加波分复用设备,有较大的资金投入。通过网络传输至远端执行。其他方式如通过数据库的触发器机制获取增量数据,然后将数据传输到对方数据库进行数据还原,本质还是获取底层的变化增量数据,在远端进行相同的DML操作来达到数据同步。

1.2 设计难点

中国民航流量管理系统在数据库架构上主要包含三个中心一级节点及八个地区二级节点。每个节点都配置有基于Oracle RAC集群的本地数据库及应用服务集群。在数据共享层引入了业界传输速度较快的ZeroMQ(以下简称“ZMQ”)消息中间件技术,设计了一套增量的基于数据结果的同步协议,利用可靠传输及校验机制,使飞行计划结果数据在各个数据库副本间高效流转。

系统所处的网络环境为民航通信网,带宽资源需与各类民航空管系统共享,有着严格的QOS要求,因此在数据同步过程中需要考虑数据的压缩及带宽占用率。如何平衡低延时与低带宽占用,是UltraSync在研发实施中的一个难点。

2 UltraSync关键技术

2.1 ZMQ传输中间件

在数据的传输同步过程中,通常使用基于消息中间件的通信技术,保障数据的无损传输[3]。Message Queue(消息队列)技术可以提供信息传送的路由,并保障信息的传递,且消息队列可在消息接收者未消费或者未连接的情况下保留数据,直至下一次被消费者取走。UltraSync在设计研发时,选用了ZMQ作为消息服务中间件。相比于其他MQ,其具备通信模式灵活,去中心化的分布式架构及吞吐量高的特性。ZMQ支持的传输模式包括:REQ/REP请求响应模式,PUB/SUB发布订阅模式,ROUTER/DEALER路由代理模式。

数据提供方是数据的生产者,在民航流量管理系统中,即为处在中心节点的一级数据库系统。UltraSync在一级部署了服务端,为二级同步提供代理服务。通过消息路由代理模式,数据提供方和请求方通过代理交互,而不用各方建立底层的多对多的数据连接,简化了系统模块间的交叉通信。考虑系统处理能力有差异,在客户端增加了本地缓存,通过ZMQ传输的同步数据会先在客户端本地写入数据请求方的共享内存,减少网络消息阻塞等待客户端入库的时延。

2.2 数据传输工作流

UltraSync提取增量源数据的方式主要是通过数据时标或触发器机制,获取变化的数据,其基本捕获的数据事件为DML类型的增删修改事件。为保证变更的数据能正确的传达至二级,UltraSync工具设计了一套队列机制,对每一个二级节点的同步客户端连接,建立一个专用的服务程序对其进行数据传输,类似Oracle数据库服务器的Dedicated Server模式。

在客户端与客户端建立队列的过程中,先通过连接队列消息CONN,请求确认消息ACP,数据索取消息REQ交互需要传输的数据表及二级最新的数据时标。一级的专用服务进程通过比对下级上报的时标,获取需要传输的增量数据,对本批次传输的数据行进行流水号编号,通过ZMQ队列传输至二级。二级对接收的数据依据流水号是否连续进行两端确认,无误后执行数据的修改操作,从而保证数据的一致及增量数据的完整性。

3 系统同步架构及实现

3.1 系统总体架构

以UltraSync的实际应用场景为例。在同步系统设计上,在一级节点部署UltraSync服务端,在二级节点部署UltraSync代理客户端,实现一级到二级点对点,1对N的数据同步传输,如图1所示。

首先,在一级节点上,系统整体设计为主,备,应急的高冗余数据中心级架构。对于二级系统的同步代理端,如何连接正在运行的一级节点是实现的难点。Ultra Sync参照现在流行的开源系统架构,采用类似服务网关的设计,即在系统的DMZ隔离区,通过服务网关统一代理主,备,应急系统的一级核心数据库。在中国空管局三中心一级节点内部,服务端对始终指向当前为主用运行系统的数据库,通过统一的对外数据接口提供服务。

3.2  网络传输模块

在网络设置配置中,主要有GENERAL和CONNE-CTION两类配置。GENERAL标签中配置了服务连接的数据库账户身份信息.CONNECTION类配置中对每个二级节点定义了一套消息队列,每个队列以CONNECTION加地区代号的方式划定作用范围。在二级节点的標签内定义了本地区节点的连接名称,订阅数据的端口号pubport,专用通信端口p2pport,以及每个地区节点限制的带宽上限bandwidth。通过该配置,可实现二级节点的网络参数调整,具备较强的灵活性。

服务端程序启动后,根据订阅的端口号连接配置,生成服务名为nodename的专用连接进程,而客户端程序可以根据所处地区获取配置中的订阅端口,向服务端发起服务请求,获取对应节点的数据同步服务。

3.3  数据抽取及压缩模块

系统的核心数据如飞行计划数据在Oracle RAC集群中主要以字符串形式存储。其传输一条记录的基本流程如下:UltraSync在获取数据库数据时,根据数据库表元信息(MetaData)生成结构体,在程序内存中完成表数据到结构体的复制,结构体的压缩,再通过ZMQ队列进行数据传输。在数据压缩中,综合考虑压缩性能及压缩比,使用了成熟的LZF压缩算法,降低字符串数据在通信传输中的带宽消耗,经现场运行验证,其压缩性能及程序开销均能达到业务实时性的要求。

4 系统性能验证

UltraSync 模块已在中国民航流量管理系统中上线,并承载全国各级节点实际的数据同步流量。作为代理程序,其性能受应用服务器及数据库服务器两处影响,目前的服务器环境参数,如表1所示。

在东北二级节点上线运行过程中,一级全国飞行计划数据库发生数据变化,到二级节点数据入库,平均单表延迟最大为3.17秒,延迟中位数为1.91秒。通过数据比对,飞行计划表数据在一二级库传输之间无丢失现象。

5 结语

在民航空管流量系统不断成长过程中,建立一个分布式的数据库平台,可有效共享各方信息,实现新业务的高效支撑。经实际生产系统验证,在低带宽和DML操作特别频繁的环境下,相比OGG软件表现出更好的适应性。通过系统上线运行记录,UltraSync软件在数据传输的稳定性及同步效率方面达到了系统要求。后续,还需考虑对异构数据库的兼容性及软件的可移植性问题。

[参考文献]

[1]吴礼乐.基于双活容灾存储技术的云计算数据中心的设计及应用[J].电子设计工程,2015(6):190-192.

[2]宋英华,王志勇,李钟玮.基于存储双活技术的调度自动化系统高可靠性架构研究[J].供用电,2020(3):58-63,70.

[3]王珏,孟晓蕊.分布式数据库同步中间件系统的设计与研究[J].现代电子技术,2016(9):31-36.

(编辑 姚 鑫)