APP下载

基于ZeroMQ消息通信库的空管数据共享交换平台的研究与应用

2016-05-06赵一凡

中国新通信 2016年6期

赵一凡

【摘要】 随着军民航事业的快速成长,保证军民航飞行安全的挑战愈发严峻,空中交通管理系统的工作量日渐繁杂,空管数据种类更加繁多,在不同业务之间进行数据通信往往伴随着大量的设计成本却难以达到良好的通信目标。本文对目前消息通信的发展现状做出了分析,提出了目前遇到的问题和需要前进的方向,然后介绍了一种云时代极速消息通信库——ZeroMQ,采用ZeroMQ技术可以降低平台各模块之间的耦合性,并且提高平台的灵活性、可靠性,从而使得平台易维护,最后给出了具体验证。

关键词:空管数据,消息通信,ZeroMQ

Traffic control data sharing based on ZeroMQ message communication library exchange platform for the research and application

Zhao Yifan[1](1. North China Institute of Computing Technology,100000,China)

Abstract:With the rapid development of military aviation and civil aviation industry and the progress of information technology, workload of air traffic management system is increasingly multifarious, ATC more various data types, data communication between different business is often accompanied by a lot of design cost is difficult to achieve good communication In this paper, the present situation of news communication has made the analysis, put forward the current problems and direction of the need to move forward, and then introduces a speed message communication library ZeroMQ cloud era, ZeroMQ technology can reduce platform by using the coupling between modules, and improve the platform reliability, flexibility so as to make the platform is easy to maintain, in the end, the specific verification was presented.

Key words: Air traffic data, message communication, ZeroMQ

引言

我国空管系统的许多应用程序都包含了跨越某种网络的组件,无论这种网络是局域网还是互联网。许多空管系统开发者最终都会处理某种类型的消息[1]传递。一些开发人员选择消息队列产品,但更多的时候还是使用TCP或UDP自己做。这些协议并不难用,但是从A发送几个字节到B和以任何一种可靠的方式处理消息,这两者之间有很大差别。

我们有必要做一个可复用的消息传递层,但是构建可复用的消息传递系统是非常困难的,这就是很少有自由和开放源码项目尝试做这项工作的原因,也是商业通信产品复杂、昂贵、灵活性差、脆弱的原因。

我们需要的是做消息传递工作的东西,但是需要它以简单和廉价的方式完成工作,它可以在空管系统任何应用程序中以接近零的消耗开展工作,它应该是不需要任何其它依赖就可以链接的库。无需额外的变动部件,没有额外的风险,它应该能运行在任何操作系统说,并能用任何编程语言开展工作。

因此有了ZeroMQ的思想,一个高效的可嵌入库,它解决了大部分应用程序需要解决的问题,变得在网络上有良好的可伸缩性,而没有多少成本。

一、云时代极速消息通信库——ZeroMQ

ZeroMQ(Zero Message Queue 零消息队列)是一个开源的、跨平台、高性能、精简灵活的网络消息中间件,将操作系统的异步、消息缓冲区和多线程处理机制封装在内,对各种套接字类型、网络连接建立、数据打包成帧、路由选择等底层网络通信行为进行了抽象,ZeroMQ可以自动感知路由和网络拓扑,灵活地支持多种通信环境[2]。

Rtmsgbus是基于ZeroMQ开发的数据传输共享技术。根据空管数据的特性进行了进一步地封装,主要实现了两类通信模式:发布/订阅模式和请求应答模式。Rtmsgbus只需要应用程序添加Rtmsgbus的库文件,就可以在多个模块间进行数据的发送和接受。Rtmsgbus的通信单元是消息,它只需要获取消息的长度,并不需要知道消息的格式以及内容。因此,对于空管数据的各种数据格式,比如XML、JSON、Thrift、Protocol Buffers等,只要运用Rtmsgbus就能够进行通讯。为了分类各种空管消息,Rtmsgbus根据空管数据的不同种类设定不同的主题,各个模块有专属于自己的几个主题,发送方只需要将要传输的数据封装到该主题中进行阻塞或非阻塞发送即可,接收端根据预设的规则,应用相应的主题即可接收到数据。Rtmsgbus有可靠传输和非可靠传输之分,应用不同场景,其传输效率高,部署简单。

1.1 基于ZeroMQ的订阅发布模式[3]

订阅发布模式是一对多的消息传输方式。订阅者与发布者有共同的主题,某个主题的所有订阅者同时对该主题进行监听,当该主题发生变化时,订阅者会得到其变化的消息,从而获取发布方发布的主题内容,完成消息的传输[4]。

订阅发布模式的运用场景是发送方并不知道接收方的具体情况,其只需要对自己进行操作即可,而接收方只需要按照自己需要接收的主题接收相应信息即可。订阅发布是一种松耦合模式,它不需要维护发送方和接收方的一致性,并且扩展起来很容易。

基于ZeroMQ的订阅发布模式有巨大的优势,发送方只需要将需要发送的消息封装到某一主题发出即可,订阅方根据预先的约定采用相应的主题接受消息即可,实现了消息发布的松耦合和高效性。

1.2 基于ZeroMQ的断点续传模式

在信息传输过程中,如果订阅方网络突然中断,或者是软硬件故障,会导致消息传输的中断。此时,当订阅方再连接上来的时候,为了使这部分信息不致丢失,就需要实现消息的断点续传功能。ZeroMQ通过为每一个消息设置一个消息ID,当订阅方重新恢复连接的时候,就通过这个ID值从消息中断的位置继续接收消息。断点续传就是需要保障在数据传输过程中出现问题时,可以在问题修复后继续完成传输工作[5]。

空管数据共享交换平台的断点续传的机制是:当订阅方由于各种非主观原因中断连接后,ZeroMQ会将断开连接后发布方继续发布的消息缓存在内存或者文件系统中,当订阅方恢复连接后,将缓存的或者是数据库中错过的消息重新发送给订阅方。设置文件系统是因为内存有限,缓存过多则会造成溢出。ZeroMQ通过在硬盘中分配交换空间,来防止内存溢出。

1.3 基于ZeroMQ的存储转发模式[6]

空管数据共享交换平台通过构建哈希存储结构以及文件系统实现空管数据的存储转发。对于飞行情报数据、航行情报数据以及产品数据这几类非实时性、需要进行本地备份的一些数据分配不同的存储区域,ZeroMQ利用哈希匹配原则进行存储以及转发。如果数据要求可靠性传输,则构造一个反馈值,进行稳定地可靠传输。

二、基于ZeroMQ消息通信库的数据传输需求

2.1 空管系统业务分析

空管数据共享交换平台[7]在实现各管制中心系统不同级别之间的数据共享交换的同时也需要能够满足平台内部各业务模块的数据共享交换需求。

空管数据共享交换平台在本级交换的信息主要分为外部接入的信息和业务产品信息。外部接入的信息包括监视信息、飞行情报、飞行数据、航行情报、气象信息和空管基础数据。

传统的空管业务共享交换通过TCP或者UDP[8]来进行数据传输共享,这两种方式各有不足。本文研究的空管数据共享交换平台设计采用基于ZeroMQ的消息通信库,各业务模块通过ZeroMQ进行数据共享交换,ZeroMQ将不同的主题分配给不同的业务模块,各业务模块的数据按照分配的主题进行封装,各业务模块只需要根据特定的主题即可实现对应数据的共享交互。基于ZeroMQ的订阅发布模式支持可靠实时的数据传输,发布方与订阅方根据相应的主题进行消息的发布共享,通过ZeroMQ消息通信库,可以实现各业务模块之间数据共享交换的松耦合和高效性。

ZeroMQ技术能够将各业务模块要共享交换的数据封装成消息,在任何应用程序中以接近零的消耗来开展工作,是不需要其他的依赖就可以连接的库,无需额外的变动部件,没有额外的风险,能够运行在任何操作系统上,能以任何编程语言开始工作。

2.2 基于ZeroMQ消息通信库的运用需求

空管数据共享交换平台内部数据的传输策略我们有很多备选方案,并对一些常用的数据传输共享策略做了对比,综合考虑下,ZeroMQ消息通信库可以满足空管数据传输共享的实时性和可靠性要求,可以降低网络编程的复杂性,与平台无关,其接口实现相对简单、可行。因此我们采用基于ZeroMQ消息通信库的数据传输共享策略。

数据共享交换平台各业务模块通过RtmsgBus接口调用RtmsgBus,RtmsgBus再通过ZeroMQ/PGM进行消息接收与发送,ZeroMQ/PGM调用相应的操作系统函数完成消息接收与发送工作。RtmsgBus由外部接口模块、消息发送接收模块、监视模块、日志模块、配置模块、平台无关模块构成。

三、通信测试3.1 时延测试

空管数据共享交换平台要求数据共享能够满足不同数据的时延要求,雷达监视数据、气象数据都要求实时传输,空管数据共享平台采用Rtmsgbus通信库可以实现消息的实时传输。本节就空管数据共享平台监视数据接收转发以及多路雷达数据融合转发功能进行了时延测试。如图1所示。

其中,时延均值为4.8ns,空管系统对监视数据的处理指标为小于1s的处理时延,因此空管数据共享交换平台能够满足不同数据的传输要求。

3.2 传输能力测试

空管数据共享交换平台数据量大,对于大量数据的接收转发以及存储能力是重要的一环,空管数据共享平台针对大量数据的压力测试结果如表1所示:

可以看出其丢包率不大于0.30%,空管系统对错漏数据包的标准为不高于1%,因此空管数据共享交换平台能够满足不同数据共享的可靠性要求。

四、结束语

基于ZeroMQ云时代的极速消息通信库不仅可以解决消息传递中出现的一系列悬而未决的问题,还可以使得程序变得更加简洁明了,可以提高系统的扩展性,易维护性。空管系统是一个复杂而庞大的系统,运用ZeroMQ通信库可以显著提高系统的运行效率,降低系统的耦合性,在实际运用中得到了很好地反馈。

目前空管系统对于ZeroMQ搭建的可靠传输模式尚不够完善,未来的工作需要尽可能地完善ZeroMQ的可靠传输运用。

参 考 文 献

[1] Sergey Gorinsky,Eric J. Friedman,Shane Henderson,Christoph Jechlitschek,Efficient fair algorithms for message communication[J],Simulation Modelling Practice and Theory, 2008, Vol.17 (3), pp.513-527.

[2] 蒲凤平,陈建政.基于ZeroMQ的分布式系统[J].电子测试.2012.

[3] Yingwu Zhu,Haiying Shen.An efficient and scalable framework for content-based publish/subscribe systems[J].Peer-to-Peer Networking and Applications, 2008, Vol.1 (1), pp.3-17.

[4] 袁新颜.数据交换平台的数据交换模式浅析[J].福建电脑.2011.

[5] 陈增强,郭嘉琳,刘忠信,等.具有断点续传功能的文件传输系统的设计与关键技术[J].计算机工程.2002.

[6] Ilias Maglogiannis. Design and Implementation of a Calibrated Store and Forward Imaging System for Teledermatology[J].Journal of Medical Systems, 2004, Vol.28 (5), pp.455-467.

[7] 陈玉秋,李翠霞.上下级空管系统间共享飞行数据表示的研究[J].理论与探索.2010.

[8] 李元熙,基于TCP/UDP的计算机通讯系统实现[J].无锡商业职业技术学院学报.2004.