陳 敏 屈景怡 裴方瑞 喻益琳
1(中國(guó)民航大學(xué)天津市智能信號(hào)與圖像處理重點(diǎn)實(shí)驗(yàn)室 天津 300300) 2(內(nèi)蒙古空管分局 內(nèi)蒙古 呼和浩特 010070) 3(中國(guó)國(guó)際航空股份有限公司 四川 成都 610000)
馬來(lái)西亞航空MH370航班自2014年失聯(lián)至今已逾五年,其間雖然經(jīng)過(guò)多次大規(guī)模搜索,但仍一無(wú)所獲[1]。MH370航班失聯(lián)事件在全球引起了巨大轟動(dòng),世界各國(guó)民航管理部門及機(jī)構(gòu)均開始著力于推進(jìn)全球航班跟蹤能力建設(shè)。2015年,國(guó)際民航組織提出了全球航班追蹤的路線圖以及運(yùn)行實(shí)施概念草案。2016年中國(guó)民航局成立了中國(guó)民航航空器追蹤監(jiān)控體系建設(shè)領(lǐng)導(dǎo)小組;2017年中國(guó)民航局發(fā)布了《中國(guó)民航航空器追蹤監(jiān)控體系建設(shè)實(shí)施路線圖》,明確提出分三個(gè)階段實(shí)現(xiàn)我國(guó)民用航空全球航班跟蹤體制的建設(shè)。因而亟需研發(fā)全球航班跟蹤系統(tǒng)及相關(guān)技術(shù),增強(qiáng)我國(guó)航班的全球?qū)崟r(shí)跟蹤能力[2]。目前關(guān)于全球航班跟蹤技術(shù)及系統(tǒng)的研究較少。吳志軍等[3]研究了全球航班跟蹤系統(tǒng)中信息共享技術(shù),并給出了一種集成網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)方案;Wang等[4]對(duì)可能用于全球航班跟蹤的多種監(jiān)視數(shù)據(jù)源進(jìn)行研究分析,并對(duì)各種監(jiān)視數(shù)據(jù)源中存在的問題進(jìn)行了總結(jié);Han等[5]使用了ACARS數(shù)據(jù)實(shí)現(xiàn)了對(duì)航班位置的實(shí)時(shí)追蹤,但沒有實(shí)現(xiàn)航班動(dòng)態(tài)顯示;劉琳[6]使用北斗衛(wèi)星系統(tǒng)實(shí)現(xiàn)了對(duì)少量航班的追蹤;劉海濤等[7-8]對(duì)星基ADS-B監(jiān)視容量及其數(shù)據(jù)處理和顯示進(jìn)行研究,其研究結(jié)果可應(yīng)用于全球航班跟蹤,但其并未針對(duì)大批量航班數(shù)據(jù)處理進(jìn)行優(yōu)化及測(cè)試。
全球航班跟蹤系統(tǒng)實(shí)時(shí)在線處理、跟蹤的航班數(shù)量最大超過(guò)10 000架次。大批量航班數(shù)據(jù)的并發(fā)式輸入容易導(dǎo)致系統(tǒng)處理過(guò)載、緩沖區(qū)溢出,從而產(chǎn)生航班數(shù)據(jù)丟失、延遲、航班飛行態(tài)勢(shì)顯示卡頓等異常。因而,在全球航班跟蹤系統(tǒng)的設(shè)計(jì)過(guò)程中,如何解決大批量、高并發(fā)航班數(shù)據(jù)的接入、處理及顯示問題,是一個(gè)不小的挑戰(zhàn)。
本文給出一種全球航班跟蹤系統(tǒng)設(shè)計(jì)方案,通過(guò)設(shè)計(jì)易于拓展、并行化的數(shù)據(jù)處理硬件架構(gòu),構(gòu)建多線程并行化處理軟件架構(gòu),以及使用內(nèi)存地址交換技術(shù),充分利用服務(wù)器多核心處理能力,有效地解決了大批量、高并發(fā)航班數(shù)據(jù)處理帶來(lái)的問題。長(zhǎng)時(shí)間的實(shí)際運(yùn)行表明,設(shè)計(jì)方案有效可行,運(yùn)行效果良好。
全球航班跟蹤系統(tǒng)是集監(jiān)視數(shù)據(jù)接入、校驗(yàn)、解析、處理、跟蹤顯示于一體的自動(dòng)化系統(tǒng)。全球航班跟蹤系統(tǒng)采用模塊化設(shè)計(jì)思想,系統(tǒng)由數(shù)據(jù)管理、前端數(shù)據(jù)處理、地理信息系統(tǒng)、航行情報(bào)資料顯示、航班跟蹤、顯示子系統(tǒng)組成。全球航班跟蹤系統(tǒng)架構(gòu)如圖1所示。
圖1 全球航班跟蹤系統(tǒng)框架
系統(tǒng)主要功能模塊有:
1) 前端數(shù)據(jù)處理模塊。通過(guò)局域網(wǎng)接入多源監(jiān)視數(shù)據(jù),數(shù)據(jù)類型包括ACARS、SSR、地基ADS-B、星基ADS-B數(shù)據(jù),完成對(duì)數(shù)據(jù)的解析(星基ADS-B數(shù)據(jù)解析參見文獻(xiàn)[9])、CRC校驗(yàn)(校驗(yàn)算法參見文獻(xiàn)[10])、異常數(shù)據(jù)濾除、坐標(biāo)投影等處理后,實(shí)現(xiàn)對(duì)多源異構(gòu)監(jiān)視數(shù)據(jù)的融合處理。
2) 航班跟蹤及顯示。實(shí)現(xiàn)對(duì)全球航班的顯示及跟蹤,包括航班飛行態(tài)勢(shì)顯示、航班跟蹤、歷史尾跡顯示、飛行剖面顯示、實(shí)時(shí)油量剖面顯示,同時(shí)還具備有航班過(guò)濾、航班檢索等功能。
3) 地理信息(GIS)系統(tǒng)。地理信息系統(tǒng)以SHAPEFILE標(biāo)準(zhǔn)地理數(shù)據(jù)文件為數(shù)據(jù)源,具備對(duì)地理信息資料,包括行政區(qū)域、城市、道路、河流、水域等元素的載入、處理、投影、顯示、管理。
4) 航行情報(bào)資料顯示。同時(shí)支持對(duì)航行情報(bào)資料,包括航路航線、飛行情報(bào)區(qū)、機(jī)場(chǎng)、危險(xiǎn)區(qū)、限制區(qū)、終端近進(jìn)區(qū)等元素的載入、處理、顯示、管理。支持地圖的投影、放大、縮小、拖動(dòng)平移等操作。
5) 數(shù)據(jù)管理。以SQLite為基礎(chǔ),完成對(duì)航行情報(bào)資料數(shù)據(jù)庫(kù)、監(jiān)視數(shù)據(jù)數(shù)據(jù)庫(kù)等數(shù)據(jù)的存儲(chǔ)及管理,包括數(shù)據(jù)的查詢、增加、修改、刪除、導(dǎo)入導(dǎo)出等,同時(shí)提供各個(gè)功能的對(duì)外接口AIP函數(shù),供其他功能模塊使用。數(shù)據(jù)管理子系統(tǒng)對(duì)各類監(jiān)視數(shù)據(jù)存儲(chǔ)周期超180天,同時(shí)支持場(chǎng)景回放。
全球航班跟蹤系統(tǒng)可實(shí)現(xiàn)對(duì)我國(guó)范圍內(nèi)飛行的全部航班及在境外飛行的我國(guó)航班的實(shí)時(shí)顯示及跟蹤。由于系統(tǒng)跟蹤的航班數(shù)據(jù)量巨大,系統(tǒng)最大實(shí)時(shí)處理航班數(shù)超過(guò)10 000個(gè)。如何實(shí)現(xiàn)大批量、高并發(fā)航班數(shù)據(jù)的有效接入及實(shí)時(shí)處理是一個(gè)必須解決的問題。在前端數(shù)據(jù)處理子系統(tǒng)中,主要通過(guò)易于拓展的硬件架構(gòu)設(shè)計(jì)、多線程分級(jí)處理、結(jié)合多種優(yōu)化方法來(lái)解決大批量、高并發(fā)航跡數(shù)據(jù)的接入及處理問題。
為了實(shí)現(xiàn)大批量、高并發(fā)航班數(shù)據(jù)有效的接入、處理、顯示,保證系統(tǒng)流程穩(wěn)定運(yùn)行,前端數(shù)據(jù)處理子系統(tǒng)在進(jìn)行架構(gòu)設(shè)計(jì)時(shí),通過(guò)設(shè)立多臺(tái)前端數(shù)據(jù)處理服務(wù)器,對(duì)多路不同類型的數(shù)據(jù)源進(jìn)行并行化處理,并行化處理后的結(jié)果在綜合顯示終端子系統(tǒng)進(jìn)行整合。同時(shí)設(shè)立數(shù)據(jù)均衡服務(wù)器,通過(guò)周期性地檢測(cè)各個(gè)數(shù)據(jù)預(yù)處理服務(wù)器節(jié)點(diǎn)的CPU及內(nèi)存負(fù)載情況,進(jìn)而調(diào)配不同服務(wù)器數(shù)據(jù)處理流量,避免出現(xiàn)單一服務(wù)器數(shù)據(jù)處理超載情況發(fā)生。不同數(shù)據(jù)預(yù)處理服務(wù)器可獨(dú)立完成功能完整的數(shù)據(jù)預(yù)處理流程,在全球航班跟蹤系統(tǒng)的實(shí)際運(yùn)行過(guò)程中可以根據(jù)數(shù)據(jù)流量的變化,靈活增減數(shù)據(jù)預(yù)處理服務(wù)器的數(shù)量,拓展數(shù)據(jù)預(yù)處理能力。各個(gè)前端數(shù)據(jù)處理服務(wù)器通過(guò)NTP授時(shí)服務(wù)器統(tǒng)計(jì)校時(shí),保證數(shù)據(jù)處理時(shí)間同步。前端數(shù)據(jù)處理子系統(tǒng)可拓展硬件架構(gòu)如圖2所示。
圖2 系統(tǒng)可拓展硬件架構(gòu)
在進(jìn)行大批量、高并發(fā)航班數(shù)據(jù)接入及處理時(shí),為了充分利用高性能工作站的多核心處理能力,避免出現(xiàn)處理過(guò)載,減少數(shù)據(jù)處理延遲,前端數(shù)據(jù)處理模塊采用了多線程并行化軟件架構(gòu),軟件架構(gòu)如圖3所示。不同線程間通過(guò)數(shù)據(jù)交換緩沖區(qū)來(lái)進(jìn)行數(shù)據(jù)的交換。
圖3 多線程前端數(shù)據(jù)處理軟件架構(gòu)
針對(duì)不同類型的航跡數(shù)據(jù)源,分別設(shè)立不同的數(shù)據(jù)接入線程,各線程獨(dú)立運(yùn)行。使用不同的線程來(lái)分別完成數(shù)據(jù)預(yù)處理過(guò)程中的不同環(huán)節(jié),將CRC校驗(yàn)及數(shù)據(jù)必備項(xiàng)檢測(cè)與數(shù)據(jù)解析及坐標(biāo)投影分別使用兩個(gè)不同的線程來(lái)實(shí)現(xiàn),并使用CRC校驗(yàn)以及數(shù)據(jù)必備項(xiàng)檢測(cè)的結(jié)果來(lái)修正數(shù)據(jù)解析的結(jié)果。不同線程之間使用內(nèi)存數(shù)據(jù)緩沖區(qū)來(lái)進(jìn)行數(shù)據(jù)的交換及共享。數(shù)據(jù)接入線程接入的數(shù)據(jù)存入數(shù)據(jù)交換緩沖區(qū)A中。CRC校驗(yàn)及數(shù)據(jù)必備項(xiàng)檢測(cè)、數(shù)據(jù)解析及坐標(biāo)投影線程則使用數(shù)據(jù)交換緩沖區(qū)B,多個(gè)CRC校驗(yàn)線程以及數(shù)據(jù)解析及坐標(biāo)投影線程分別從數(shù)據(jù)交換緩沖區(qū)B中提取數(shù)據(jù),進(jìn)行數(shù)據(jù)校驗(yàn)、數(shù)據(jù)必備項(xiàng)檢測(cè),數(shù)據(jù)解析及坐標(biāo)投影。完成預(yù)處理后的航班數(shù)據(jù)存入到解碼數(shù)據(jù)交換緩沖區(qū),解析后的不同類型的監(jiān)視數(shù)據(jù)均歸一化為相同結(jié)構(gòu),方便進(jìn)行多源異構(gòu)數(shù)據(jù)的融合及信息補(bǔ)全。
然而,當(dāng)航班數(shù)據(jù)批量過(guò)大時(shí),會(huì)導(dǎo)致大量航班數(shù)據(jù)在不同緩沖區(qū)間來(lái)回進(jìn)行高頻交換,數(shù)據(jù)在不同緩沖區(qū)間的來(lái)回拷貝將會(huì)極大地占用系統(tǒng)硬件資源,降低系統(tǒng)處理效率。為了解決數(shù)據(jù)交換帶來(lái)的處理效率降低問題,系統(tǒng)使用了內(nèi)存地址交換方法,在進(jìn)行數(shù)據(jù)交換時(shí)僅僅實(shí)現(xiàn)內(nèi)存地址的交換,而數(shù)據(jù)在內(nèi)存中的實(shí)際存儲(chǔ)位置并不發(fā)生變化。同時(shí)結(jié)合全局互斥鎖的同步使用,保證了各線程相互配合,協(xié)同完成數(shù)據(jù)預(yù)處理工作,同時(shí)避免了多線程間的訪問沖突的出現(xiàn)。基于內(nèi)存地址交換技術(shù)的大批量數(shù)據(jù)預(yù)處理技術(shù)處理流程如圖4所示。
圖4 前端數(shù)據(jù)預(yù)處理流程
數(shù)據(jù)接入線程接入在完成數(shù)據(jù)的接收與存入后即向后續(xù)數(shù)據(jù)處理線程發(fā)送數(shù)據(jù)到達(dá)事件消息。數(shù)據(jù)處理線程接收到達(dá)事件消息后,通過(guò)使用內(nèi)存地址交換技術(shù),交換“數(shù)據(jù)交換緩沖區(qū)A”與“數(shù)據(jù)交換緩沖區(qū)B”的地址,對(duì)數(shù)據(jù)緩沖區(qū)B中的數(shù)據(jù)進(jìn)行逐條處理。通過(guò)使用內(nèi)存地址交換技術(shù),避免了直接交換內(nèi)存AB中的數(shù)據(jù),節(jié)省了數(shù)據(jù)交換時(shí)間,提高了程序的數(shù)據(jù)處理能力。然而,此方法必須要保證多線程訪問數(shù)據(jù)緩沖區(qū)時(shí)嚴(yán)格同步,避免出現(xiàn)多個(gè)線程同時(shí)使用同一個(gè)數(shù)據(jù)緩沖區(qū),同步避免了在進(jìn)行數(shù)據(jù)緩沖區(qū)地址交換時(shí)出現(xiàn)線程訪問沖突的情況出現(xiàn)。通過(guò)使用C++中的全局鎖CRITICAL_SECTION以及EnterCriticalSection()和LeaveCriticalSection()函數(shù)的合理使用,保證各線程能協(xié)調(diào)使用各數(shù)據(jù)緩沖區(qū),不會(huì)出現(xiàn)訪問沖突。
航班跟蹤及顯示是以GIS平臺(tái)為基礎(chǔ),在地理信息平臺(tái)上通過(guò)疊加航班標(biāo)識(shí)符、航班標(biāo)牌、列表、速度剖面、油量剖面及高度剖面等跟蹤信息,實(shí)現(xiàn)航班飛行態(tài)勢(shì)的顯示。航班跟蹤及顯示子系統(tǒng)基于GDI繪圖庫(kù)構(gòu)建了大量的繪圖函數(shù)類,這些類分別完成飛行標(biāo)識(shí)、飛行標(biāo)牌等不同元素的繪制工作。航班跟蹤及顯示子系統(tǒng)通過(guò)接收來(lái)自定時(shí)器、MFC窗口界面、用戶操作等多種不同的消息,經(jīng)過(guò)消息處理中心處理后,實(shí)現(xiàn)對(duì)飛行態(tài)勢(shì)的動(dòng)態(tài)更新顯示以及航班跟蹤。航班跟蹤處理流程如圖5所示。
航班跟蹤處理是基于“解碼數(shù)據(jù)交換緩沖區(qū)”來(lái)進(jìn)行的,“解碼數(shù)據(jù)交換緩沖區(qū)”是一個(gè)靜態(tài)的全局的數(shù)據(jù)存儲(chǔ)緩沖區(qū)。前端數(shù)據(jù)處理功能模塊將經(jīng)過(guò)處理后的航班數(shù)據(jù)存入“解碼數(shù)據(jù)交換緩沖區(qū)”內(nèi),航班跟蹤及顯示子系統(tǒng)則定期地從“解碼數(shù)據(jù)交換緩沖區(qū)”中提取航班數(shù)據(jù),經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換后,將航跡數(shù)據(jù)坐標(biāo)由WGS- 84大地坐標(biāo)系轉(zhuǎn)換至屏幕坐標(biāo)系下,通過(guò)各種顯示元素的繪圖類完成飛行態(tài)勢(shì)、標(biāo)牌、速度、高度及油量剖面的繪制。
“解碼數(shù)據(jù)交換緩沖區(qū)”中存儲(chǔ)的數(shù)據(jù)經(jīng)過(guò)嚴(yán)格的維護(hù)以實(shí)現(xiàn)航班的跟蹤。由于系統(tǒng)接入的數(shù)據(jù)種類較多,包括ACARS、SSR、地基ADS-B、星基ADS-B數(shù)據(jù),不同類型的監(jiān)視數(shù)據(jù)源中會(huì)存在著大量相同航班。因而,在完成航班數(shù)據(jù)的前端處理后,數(shù)據(jù)進(jìn)入“解碼數(shù)據(jù)交換緩沖區(qū)”時(shí)必須進(jìn)行數(shù)據(jù)關(guān)聯(lián)及融合。由于ACARS及ADS-B中的24位地址碼、航班號(hào)及機(jī)尾號(hào)(飛行國(guó)際登記號(hào))均為航班關(guān)聯(lián)的唯一標(biāo)識(shí)。而SSR以二次代碼(二次雷達(dá)代碼)為航班標(biāo)識(shí),但不同地區(qū)二次代碼可能出現(xiàn)重復(fù),因而需要將二次代碼結(jié)合監(jiān)視數(shù)據(jù)源標(biāo)識(shí)中的區(qū)域源代碼(SAC)及設(shè)備源代碼(SIC)字段才可完成航班關(guān)聯(lián)。完成關(guān)聯(lián)后的航班其狀態(tài)可以得到實(shí)時(shí)更新。
全球航班跟蹤系統(tǒng)實(shí)際運(yùn)行狀態(tài)下系統(tǒng)部署情況如下:系統(tǒng)由三臺(tái)服務(wù)器、一臺(tái)高性能工作站組成,分別為一臺(tái)負(fù)載均衡服務(wù)器、兩臺(tái)前端數(shù)據(jù)處理服務(wù)器、一臺(tái)航班跟蹤及顯示工作站。負(fù)載均衡服務(wù)器完成數(shù)據(jù)接入及分發(fā),同時(shí)監(jiān)控兩臺(tái)前端數(shù)據(jù)處理服務(wù)器的工作狀態(tài)和負(fù)荷情況,實(shí)時(shí)調(diào)整數(shù)據(jù)流量。兩臺(tái)前端數(shù)據(jù)處理服務(wù)器并行工作,分別處理一部分航班數(shù)據(jù),同時(shí)互為備份,若其中一臺(tái)服務(wù)器出現(xiàn)異常,負(fù)載均衡服務(wù)器可以將數(shù)據(jù)計(jì)算分配至另外一臺(tái)前端數(shù)據(jù)處理服務(wù)器,以保證系統(tǒng)正常工作。系統(tǒng)引接一路二次雷達(dá)數(shù)據(jù)、一路地基ADS-B數(shù)據(jù)、一路ACRAS數(shù)據(jù),實(shí)時(shí)在線監(jiān)視跟蹤國(guó)內(nèi)的所有航班及境外飛行的我國(guó)航班2 000余個(gè)。圖6為全球航班跟蹤系統(tǒng)實(shí)際運(yùn)行界面截圖。
圖6 全球航班跟蹤系統(tǒng)運(yùn)行效果
圖7為全球航班跟蹤系統(tǒng)在地理信息及航行情報(bào)資料顯示效果。顯示內(nèi)容包括行政區(qū)域邊界、河流、水域、路航線圖、飛行情報(bào)區(qū)地圖、機(jī)場(chǎng)地圖、危險(xiǎn)區(qū)、限制區(qū)等。系統(tǒng)支持地圖的放大、縮小及平移操作。
圖7 系統(tǒng)地理信息及航行情報(bào)資料顯示
在實(shí)際運(yùn)行的情況下對(duì)全球航班跟蹤系統(tǒng)的數(shù)據(jù)實(shí)時(shí)處理能力進(jìn)行了測(cè)試。圖8為全球航班跟蹤系統(tǒng)在實(shí)際運(yùn)行情況下,執(zhí)行一次數(shù)據(jù)處理所需要的時(shí)間,其中:橫坐標(biāo)為系統(tǒng)完成一次數(shù)據(jù)處理時(shí)的數(shù)據(jù)量;縱坐標(biāo)為數(shù)據(jù)處理所消耗的時(shí)間,消耗時(shí)間通過(guò)Windows操作系統(tǒng)API函數(shù)GetTickCount()函數(shù)獲取。
全球航班跟蹤系統(tǒng)在實(shí)際運(yùn)行時(shí),單批次處理的航班數(shù)據(jù)條數(shù)小于1 000條/次時(shí),在進(jìn)行小批量航跡數(shù)據(jù)處理時(shí),由于系統(tǒng)流水線任務(wù)調(diào)度、線程同步等待等原因,每次處理數(shù)據(jù)平均耗時(shí)并不相同,但通常在50 ms以內(nèi)。當(dāng)系統(tǒng)處理的數(shù)據(jù)量達(dá)到12 000條/次以上時(shí),系統(tǒng)處理數(shù)據(jù)耗時(shí)也相應(yīng)變長(zhǎng),但整體數(shù)據(jù)處理耗時(shí)均小于350 ms。測(cè)試結(jié)果表明系統(tǒng)整體數(shù)據(jù)處理延遲較小,能夠滿足全球航班跟蹤系統(tǒng)任務(wù)要求。
本文提出一種可行的全球航班跟蹤系統(tǒng)設(shè)計(jì)方案及各個(gè)關(guān)鍵功能單元的詳細(xì)架構(gòu)和處理流程設(shè)計(jì),并針對(duì)全球航班跟蹤應(yīng)用場(chǎng)景中面臨的大批量、高并發(fā)航班數(shù)據(jù)處理問題,給出了具體的優(yōu)化設(shè)計(jì)方法。通過(guò)設(shè)計(jì)可拓展的硬件處理架構(gòu),同時(shí)結(jié)合多線程軟件處理架構(gòu)設(shè)計(jì),保證了系統(tǒng)流暢穩(wěn)定運(yùn)行。系統(tǒng)實(shí)際運(yùn)行結(jié)果良好,實(shí)現(xiàn)了對(duì)我國(guó)境內(nèi)的所有航班以及在境外飛行的我國(guó)航班的跟蹤監(jiān)視,我國(guó)航班覆蓋率達(dá)到87%。系統(tǒng)操作流暢,運(yùn)行穩(wěn)定,實(shí)時(shí)性高,滿足了對(duì)我國(guó)航班境內(nèi)飛行的所有航班及境外飛行的我國(guó)航班的全球跟蹤要求。
計(jì)算機(jī)應(yīng)用與軟件2021年10期