全球航班跟踪系统关键技术研究与实现

2021-10-15 12:48屈景怡裴方瑞喻益琳
计算机应用与软件 2021年10期
关键词:缓冲区数据源线程

陈 敏 屈景怡 裴方瑞 喻益琳

1(中国民航大学天津市智能信号与图像处理重点实验室 天津 300300) 2(内蒙古空管分局 内蒙古 呼和浩特 010070) 3(中国国际航空股份有限公司 四川 成都 610000)

0 引 言

马来西亚航空MH370航班自2014年失联至今已逾五年,其间虽然经过多次大规模搜索,但仍一无所获[1]。MH370航班失联事件在全球引起了巨大轰动,世界各国民航管理部门及机构均开始着力于推进全球航班跟踪能力建设。2015年,国际民航组织提出了全球航班追踪的路线图以及运行实施概念草案。2016年中国民航局成立了中国民航航空器追踪监控体系建设领导小组;2017年中国民航局发布了《中国民航航空器追踪监控体系建设实施路线图》,明确提出分三个阶段实现我国民用航空全球航班跟踪体制的建设。因而亟需研发全球航班跟踪系统及相关技术,增强我国航班的全球实时跟踪能力[2]。目前关于全球航班跟踪技术及系统的研究较少。吴志军等[3]研究了全球航班跟踪系统中信息共享技术,并给出了一种集成网络结构设计方案;Wang等[4]对可能用于全球航班跟踪的多种监视数据源进行研究分析,并对各种监视数据源中存在的问题进行了总结;Han等[5]使用了ACARS数据实现了对航班位置的实时追踪,但没有实现航班动态显示;刘琳[6]使用北斗卫星系统实现了对少量航班的追踪;刘海涛等[7-8]对星基ADS-B监视容量及其数据处理和显示进行研究,其研究结果可应用于全球航班跟踪,但其并未针对大批量航班数据处理进行优化及测试。

全球航班跟踪系统实时在线处理、跟踪的航班数量最大超过10 000架次。大批量航班数据的并发式输入容易导致系统处理过载、缓冲区溢出,从而产生航班数据丢失、延迟、航班飞行态势显示卡顿等异常。因而,在全球航班跟踪系统的设计过程中,如何解决大批量、高并发航班数据的接入、处理及显示问题,是一个不小的挑战。

本文给出一种全球航班跟踪系统设计方案,通过设计易于拓展、并行化的数据处理硬件架构,构建多线程并行化处理软件架构,以及使用内存地址交换技术,充分利用服务器多核心处理能力,有效地解决了大批量、高并发航班数据处理带来的问题。长时间的实际运行表明,设计方案有效可行,运行效果良好。

1 系统架构设计

全球航班跟踪系统是集监视数据接入、校验、解析、处理、跟踪显示于一体的自动化系统。全球航班跟踪系统采用模块化设计思想,系统由数据管理、前端数据处理、地理信息系统、航行情报资料显示、航班跟踪、显示子系统组成。全球航班跟踪系统架构如图1所示。

图1 全球航班跟踪系统框架

系统主要功能模块有:

1) 前端数据处理模块。通过局域网接入多源监视数据,数据类型包括ACARS、SSR、地基ADS-B、星基ADS-B数据,完成对数据的解析(星基ADS-B数据解析参见文献[9])、CRC校验(校验算法参见文献[10])、异常数据滤除、坐标投影等处理后,实现对多源异构监视数据的融合处理。

2) 航班跟踪及显示。实现对全球航班的显示及跟踪,包括航班飞行态势显示、航班跟踪、历史尾迹显示、飞行剖面显示、实时油量剖面显示,同时还具备有航班过滤、航班检索等功能。

3) 地理信息(GIS)系统。地理信息系统以SHAPEFILE标准地理数据文件为数据源,具备对地理信息资料,包括行政区域、城市、道路、河流、水域等元素的载入、处理、投影、显示、管理。

4) 航行情报资料显示。同时支持对航行情报资料,包括航路航线、飞行情报区、机场、危险区、限制区、终端近进区等元素的载入、处理、显示、管理。支持地图的投影、放大、缩小、拖动平移等操作。

5) 数据管理。以SQLite为基础,完成对航行情报资料数据库、监视数据数据库等数据的存储及管理,包括数据的查询、增加、修改、删除、导入导出等,同时提供各个功能的对外接口AIP函数,供其他功能模块使用。数据管理子系统对各类监视数据存储周期超180天,同时支持场景回放。

2 系统关键技术实现

全球航班跟踪系统可实现对我国范围内飞行的全部航班及在境外飞行的我国航班的实时显示及跟踪。由于系统跟踪的航班数据量巨大,系统最大实时处理航班数超过10 000个。如何实现大批量、高并发航班数据的有效接入及实时处理是一个必须解决的问题。在前端数据处理子系统中,主要通过易于拓展的硬件架构设计、多线程分级处理、结合多种优化方法来解决大批量、高并发航迹数据的接入及处理问题。

2.1 可拓展硬件架构设计

为了实现大批量、高并发航班数据有效的接入、处理、显示,保证系统流程稳定运行,前端数据处理子系统在进行架构设计时,通过设立多台前端数据处理服务器,对多路不同类型的数据源进行并行化处理,并行化处理后的结果在综合显示终端子系统进行整合。同时设立数据均衡服务器,通过周期性地检测各个数据预处理服务器节点的CPU及内存负载情况,进而调配不同服务器数据处理流量,避免出现单一服务器数据处理超载情况发生。不同数据预处理服务器可独立完成功能完整的数据预处理流程,在全球航班跟踪系统的实际运行过程中可以根据数据流量的变化,灵活增减数据预处理服务器的数量,拓展数据预处理能力。各个前端数据处理服务器通过NTP授时服务器统计校时,保证数据处理时间同步。前端数据处理子系统可拓展硬件架构如图2所示。

图2 系统可拓展硬件架构

2.2 前端数据处理

在进行大批量、高并发航班数据接入及处理时,为了充分利用高性能工作站的多核心处理能力,避免出现处理过载,减少数据处理延迟,前端数据处理模块采用了多线程并行化软件架构,软件架构如图3所示。不同线程间通过数据交换缓冲区来进行数据的交换。

图3 多线程前端数据处理软件架构

针对不同类型的航迹数据源,分别设立不同的数据接入线程,各线程独立运行。使用不同的线程来分别完成数据预处理过程中的不同环节,将CRC校验及数据必备项检测与数据解析及坐标投影分别使用两个不同的线程来实现,并使用CRC校验以及数据必备项检测的结果来修正数据解析的结果。不同线程之间使用内存数据缓冲区来进行数据的交换及共享。数据接入线程接入的数据存入数据交换缓冲区A中。CRC校验及数据必备项检测、数据解析及坐标投影线程则使用数据交换缓冲区B,多个CRC校验线程以及数据解析及坐标投影线程分别从数据交换缓冲区B中提取数据,进行数据校验、数据必备项检测,数据解析及坐标投影。完成预处理后的航班数据存入到解码数据交换缓冲区,解析后的不同类型的监视数据均归一化为相同结构,方便进行多源异构数据的融合及信息补全。

然而,当航班数据批量过大时,会导致大量航班数据在不同缓冲区间来回进行高频交换,数据在不同缓冲区间的来回拷贝将会极大地占用系统硬件资源,降低系统处理效率。为了解决数据交换带来的处理效率降低问题,系统使用了内存地址交换方法,在进行数据交换时仅仅实现内存地址的交换,而数据在内存中的实际存储位置并不发生变化。同时结合全局互斥锁的同步使用,保证了各线程相互配合,协同完成数据预处理工作,同时避免了多线程间的访问冲突的出现。基于内存地址交换技术的大批量数据预处理技术处理流程如图4所示。

图4 前端数据预处理流程

数据接入线程接入在完成数据的接收与存入后即向后续数据处理线程发送数据到达事件消息。数据处理线程接收到达事件消息后,通过使用内存地址交换技术,交换“数据交换缓冲区A”与“数据交换缓冲区B”的地址,对数据缓冲区B中的数据进行逐条处理。通过使用内存地址交换技术,避免了直接交换内存AB中的数据,节省了数据交换时间,提高了程序的数据处理能力。然而,此方法必须要保证多线程访问数据缓冲区时严格同步,避免出现多个线程同时使用同一个数据缓冲区,同步避免了在进行数据缓冲区地址交换时出现线程访问冲突的情况出现。通过使用C++中的全局锁CRITICAL_SECTION以及EnterCriticalSection()和LeaveCriticalSection()函数的合理使用,保证各线程能协调使用各数据缓冲区,不会出现访问冲突。

2.3 航班跟踪及显示处理

航班跟踪及显示是以GIS平台为基础,在地理信息平台上通过叠加航班标识符、航班标牌、列表、速度剖面、油量剖面及高度剖面等跟踪信息,实现航班飞行态势的显示。航班跟踪及显示子系统基于GDI绘图库构建了大量的绘图函数类,这些类分别完成飞行标识、飞行标牌等不同元素的绘制工作。航班跟踪及显示子系统通过接收来自定时器、MFC窗口界面、用户操作等多种不同的消息,经过消息处理中心处理后,实现对飞行态势的动态更新显示以及航班跟踪。航班跟踪处理流程如图5所示。

航班跟踪处理是基于“解码数据交换缓冲区”来进行的,“解码数据交换缓冲区”是一个静态的全局的数据存储缓冲区。前端数据处理功能模块将经过处理后的航班数据存入“解码数据交换缓冲区”内,航班跟踪及显示子系统则定期地从“解码数据交换缓冲区”中提取航班数据,经过坐标转换后,将航迹数据坐标由WGS- 84大地坐标系转换至屏幕坐标系下,通过各种显示元素的绘图类完成飞行态势、标牌、速度、高度及油量剖面的绘制。

“解码数据交换缓冲区”中存储的数据经过严格的维护以实现航班的跟踪。由于系统接入的数据种类较多,包括ACARS、SSR、地基ADS-B、星基ADS-B数据,不同类型的监视数据源中会存在着大量相同航班。因而,在完成航班数据的前端处理后,数据进入“解码数据交换缓冲区”时必须进行数据关联及融合。由于ACARS及ADS-B中的24位地址码、航班号及机尾号(飞行国际登记号)均为航班关联的唯一标识。而SSR以二次代码(二次雷达代码)为航班标识,但不同地区二次代码可能出现重复,因而需要将二次代码结合监视数据源标识中的区域源代码(SAC)及设备源代码(SIC)字段才可完成航班关联。完成关联后的航班其状态可以得到实时更新。

3 系统运行实例及性能测试

全球航班跟踪系统实际运行状态下系统部署情况如下:系统由三台服务器、一台高性能工作站组成,分别为一台负载均衡服务器、两台前端数据处理服务器、一台航班跟踪及显示工作站。负载均衡服务器完成数据接入及分发,同时监控两台前端数据处理服务器的工作状态和负荷情况,实时调整数据流量。两台前端数据处理服务器并行工作,分别处理一部分航班数据,同时互为备份,若其中一台服务器出现异常,负载均衡服务器可以将数据计算分配至另外一台前端数据处理服务器,以保证系统正常工作。系统引接一路二次雷达数据、一路地基ADS-B数据、一路ACRAS数据,实时在线监视跟踪国内的所有航班及境外飞行的我国航班2 000余个。图6为全球航班跟踪系统实际运行界面截图。

图6 全球航班跟踪系统运行效果

图7为全球航班跟踪系统在地理信息及航行情报资料显示效果。显示内容包括行政区域边界、河流、水域、路航线图、飞行情报区地图、机场地图、危险区、限制区等。系统支持地图的放大、缩小及平移操作。

图7 系统地理信息及航行情报资料显示

在实际运行的情况下对全球航班跟踪系统的数据实时处理能力进行了测试。图8为全球航班跟踪系统在实际运行情况下,执行一次数据处理所需要的时间,其中:横坐标为系统完成一次数据处理时的数据量;纵坐标为数据处理所消耗的时间,消耗时间通过Windows操作系统API函数GetTickCount()函数获取。

全球航班跟踪系统在实际运行时,单批次处理的航班数据条数小于1 000条/次时,在进行小批量航迹数据处理时,由于系统流水线任务调度、线程同步等待等原因,每次处理数据平均耗时并不相同,但通常在50 ms以内。当系统处理的数据量达到12 000条/次以上时,系统处理数据耗时也相应变长,但整体数据处理耗时均小于350 ms。测试结果表明系统整体数据处理延迟较小,能够满足全球航班跟踪系统任务要求。

4 结 语

本文提出一种可行的全球航班跟踪系统设计方案及各个关键功能单元的详细架构和处理流程设计,并针对全球航班跟踪应用场景中面临的大批量、高并发航班数据处理问题,给出了具体的优化设计方法。通过设计可拓展的硬件处理架构,同时结合多线程软件处理架构设计,保证了系统流畅稳定运行。系统实际运行结果良好,实现了对我国境内的所有航班以及在境外飞行的我国航班的跟踪监视,我国航班覆盖率达到87%。系统操作流畅,运行稳定,实时性高,满足了对我国航班境内飞行的所有航班及境外飞行的我国航班的全球跟踪要求。

猜你喜欢
缓冲区数据源线程
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
图表中的交互 数据钻取还能这么用
缓冲区溢出漏洞攻击及其对策探析
基于Excel的照片查询系统开发与应用
再谈利用邮件合并功能批量生成准考证
数据有增加 图表自适应
初涉缓冲区
本期导读