趙一凡


【摘要】 隨著軍民航事業的快速成長,保證軍民航飛行安全的挑戰愈發嚴峻,空中交通管理系統的工作量日漸繁雜,空管數據種類更加繁多,在不同業務之間進行數據通信往往伴隨著大量的設計成本卻難以達到良好的通信目標。本文對目前消息通信的發展現狀做出了分析,提出了目前遇到的問題和需要前進的方向,然后介紹了一種云時代極速消息通信庫——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.