趙一凡
【摘要】 隨著軍民航事業(yè)的快速成長(zhǎng),保證軍民航飛行安全的挑戰(zhàn)愈發(fā)嚴(yán)峻,空中交通管理系統(tǒng)的工作量日漸繁雜,空管數(shù)據(jù)種類更加繁多,在不同業(yè)務(wù)之間進(jìn)行數(shù)據(jù)通信往往伴隨著大量的設(shè)計(jì)成本卻難以達(dá)到良好的通信目標(biāo)。本文對(duì)目前消息通信的發(fā)展現(xiàn)狀做出了分析,提出了目前遇到的問(wèn)題和需要前進(jìn)的方向,然后介紹了一種云時(shí)代極速消息通信庫(kù)——ZeroMQ,采用ZeroMQ技術(shù)可以降低平臺(tái)各模塊之間的耦合性,并且提高平臺(tái)的靈活性、可靠性,從而使得平臺(tái)易維護(hù),最后給出了具體驗(yàn)證。
關(guān)鍵詞:空管數(shù)據(jù),消息通信,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
引言
我國(guó)空管系統(tǒng)的許多應(yīng)用程序都包含了跨越某種網(wǎng)絡(luò)的組件,無(wú)論這種網(wǎng)絡(luò)是局域網(wǎng)還是互聯(lián)網(wǎng)。許多空管系統(tǒng)開發(fā)者最終都會(huì)處理某種類型的消息[1]傳遞。一些開發(fā)人員選擇消息隊(duì)列產(chǎn)品,但更多的時(shí)候還是使用TCP或UDP自己做。這些協(xié)議并不難用,但是從A發(fā)送幾個(gè)字節(jié)到B和以任何一種可靠的方式處理消息,這兩者之間有很大差別。
我們有必要做一個(gè)可復(fù)用的消息傳遞層,但是構(gòu)建可復(fù)用的消息傳遞系統(tǒng)是非常困難的,這就是很少有自由和開放源碼項(xiàng)目嘗試做這項(xiàng)工作的原因,也是商業(yè)通信產(chǎn)品復(fù)雜、昂貴、靈活性差、脆弱的原因。
我們需要的是做消息傳遞工作的東西,但是需要它以簡(jiǎn)單和廉價(jià)的方式完成工作,它可以在空管系統(tǒng)任何應(yīng)用程序中以接近零的消耗開展工作,它應(yīng)該是不需要任何其它依賴就可以鏈接的庫(kù)。無(wú)需額外的變動(dòng)部件,沒(méi)有額外的風(fēng)險(xiǎn),它應(yīng)該能運(yùn)行在任何操作系統(tǒng)說(shuō),并能用任何編程語(yǔ)言開展工作。
因此有了ZeroMQ的思想,一個(gè)高效的可嵌入庫(kù),它解決了大部分應(yīng)用程序需要解決的問(wèn)題,變得在網(wǎng)絡(luò)上有良好的可伸縮性,而沒(méi)有多少成本。
一、云時(shí)代極速消息通信庫(kù)——ZeroMQ
ZeroMQ(Zero Message Queue 零消息隊(duì)列)是一個(gè)開源的、跨平臺(tái)、高性能、精簡(jiǎn)靈活的網(wǎng)絡(luò)消息中間件,將操作系統(tǒng)的異步、消息緩沖區(qū)和多線程處理機(jī)制封裝在內(nèi),對(duì)各種套接字類型、網(wǎng)絡(luò)連接建立、數(shù)據(jù)打包成幀、路由選擇等底層網(wǎng)絡(luò)通信行為進(jìn)行了抽象,ZeroMQ可以自動(dòng)感知路由和網(wǎng)絡(luò)拓?fù)?,靈活地支持多種通信環(huán)境[2]。
Rtmsgbus是基于ZeroMQ開發(fā)的數(shù)據(jù)傳輸共享技術(shù)。根據(jù)空管數(shù)據(jù)的特性進(jìn)行了進(jìn)一步地封裝,主要實(shí)現(xiàn)了兩類通信模式:發(fā)布/訂閱模式和請(qǐng)求應(yīng)答模式。Rtmsgbus只需要應(yīng)用程序添加Rtmsgbus的庫(kù)文件,就可以在多個(gè)模塊間進(jìn)行數(shù)據(jù)的發(fā)送和接受。Rtmsgbus的通信單元是消息,它只需要獲取消息的長(zhǎng)度,并不需要知道消息的格式以及內(nèi)容。因此,對(duì)于空管數(shù)據(jù)的各種數(shù)據(jù)格式,比如XML、JSON、Thrift、Protocol Buffers等,只要運(yùn)用Rtmsgbus就能夠進(jìn)行通訊。為了分類各種空管消息,Rtmsgbus根據(jù)空管數(shù)據(jù)的不同種類設(shè)定不同的主題,各個(gè)模塊有專屬于自己的幾個(gè)主題,發(fā)送方只需要將要傳輸?shù)臄?shù)據(jù)封裝到該主題中進(jìn)行阻塞或非阻塞發(fā)送即可,接收端根據(jù)預(yù)設(shè)的規(guī)則,應(yīng)用相應(yīng)的主題即可接收到數(shù)據(jù)。Rtmsgbus有可靠傳輸和非可靠傳輸之分,應(yīng)用不同場(chǎng)景,其傳輸效率高,部署簡(jiǎn)單。
1.1 基于ZeroMQ的訂閱發(fā)布模式[3]
訂閱發(fā)布模式是一對(duì)多的消息傳輸方式。訂閱者與發(fā)布者有共同的主題,某個(gè)主題的所有訂閱者同時(shí)對(duì)該主題進(jìn)行監(jiān)聽,當(dāng)該主題發(fā)生變化時(shí),訂閱者會(huì)得到其變化的消息,從而獲取發(fā)布方發(fā)布的主題內(nèi)容,完成消息的傳輸[4]。
訂閱發(fā)布模式的運(yùn)用場(chǎng)景是發(fā)送方并不知道接收方的具體情況,其只需要對(duì)自己進(jìn)行操作即可,而接收方只需要按照自己需要接收的主題接收相應(yīng)信息即可。訂閱發(fā)布是一種松耦合模式,它不需要維護(hù)發(fā)送方和接收方的一致性,并且擴(kuò)展起來(lái)很容易。
基于ZeroMQ的訂閱發(fā)布模式有巨大的優(yōu)勢(shì),發(fā)送方只需要將需要發(fā)送的消息封裝到某一主題發(fā)出即可,訂閱方根據(jù)預(yù)先的約定采用相應(yīng)的主題接受消息即可,實(shí)現(xiàn)了消息發(fā)布的松耦合和高效性。
1.2 基于ZeroMQ的斷點(diǎn)續(xù)傳模式
在信息傳輸過(guò)程中,如果訂閱方網(wǎng)絡(luò)突然中斷,或者是軟硬件故障,會(huì)導(dǎo)致消息傳輸?shù)闹袛唷4藭r(shí),當(dāng)訂閱方再連接上來(lái)的時(shí)候,為了使這部分信息不致丟失,就需要實(shí)現(xiàn)消息的斷點(diǎn)續(xù)傳功能。ZeroMQ通過(guò)為每一個(gè)消息設(shè)置一個(gè)消息ID,當(dāng)訂閱方重新恢復(fù)連接的時(shí)候,就通過(guò)這個(gè)ID值從消息中斷的位置繼續(xù)接收消息。斷點(diǎn)續(xù)傳就是需要保障在數(shù)據(jù)傳輸過(guò)程中出現(xiàn)問(wèn)題時(shí),可以在問(wèn)題修復(fù)后繼續(xù)完成傳輸工作[5]。
空管數(shù)據(jù)共享交換平臺(tái)的斷點(diǎn)續(xù)傳的機(jī)制是:當(dāng)訂閱方由于各種非主觀原因中斷連接后,ZeroMQ會(huì)將斷開連接后發(fā)布方繼續(xù)發(fā)布的消息緩存在內(nèi)存或者文件系統(tǒng)中,當(dāng)訂閱方恢復(fù)連接后,將緩存的或者是數(shù)據(jù)庫(kù)中錯(cuò)過(guò)的消息重新發(fā)送給訂閱方。設(shè)置文件系統(tǒng)是因?yàn)閮?nèi)存有限,緩存過(guò)多則會(huì)造成溢出。ZeroMQ通過(guò)在硬盤中分配交換空間,來(lái)防止內(nèi)存溢出。
1.3 基于ZeroMQ的存儲(chǔ)轉(zhuǎn)發(fā)模式[6]
空管數(shù)據(jù)共享交換平臺(tái)通過(guò)構(gòu)建哈希存儲(chǔ)結(jié)構(gòu)以及文件系統(tǒng)實(shí)現(xiàn)空管數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)。對(duì)于飛行情報(bào)數(shù)據(jù)、航行情報(bào)數(shù)據(jù)以及產(chǎn)品數(shù)據(jù)這幾類非實(shí)時(shí)性、需要進(jìn)行本地備份的一些數(shù)據(jù)分配不同的存儲(chǔ)區(qū)域,ZeroMQ利用哈希匹配原則進(jìn)行存儲(chǔ)以及轉(zhuǎn)發(fā)。如果數(shù)據(jù)要求可靠性傳輸,則構(gòu)造一個(gè)反饋值,進(jìn)行穩(wěn)定地可靠傳輸。
二、基于ZeroMQ消息通信庫(kù)的數(shù)據(jù)傳輸需求
2.1 空管系統(tǒng)業(yè)務(wù)分析
空管數(shù)據(jù)共享交換平臺(tái)[7]在實(shí)現(xiàn)各管制中心系統(tǒng)不同級(jí)別之間的數(shù)據(jù)共享交換的同時(shí)也需要能夠滿足平臺(tái)內(nèi)部各業(yè)務(wù)模塊的數(shù)據(jù)共享交換需求。
空管數(shù)據(jù)共享交換平臺(tái)在本級(jí)交換的信息主要分為外部接入的信息和業(yè)務(wù)產(chǎn)品信息。外部接入的信息包括監(jiān)視信息、飛行情報(bào)、飛行數(shù)據(jù)、航行情報(bào)、氣象信息和空管基礎(chǔ)數(shù)據(jù)。
傳統(tǒng)的空管業(yè)務(wù)共享交換通過(guò)TCP或者UDP[8]來(lái)進(jìn)行數(shù)據(jù)傳輸共享,這兩種方式各有不足。本文研究的空管數(shù)據(jù)共享交換平臺(tái)設(shè)計(jì)采用基于ZeroMQ的消息通信庫(kù),各業(yè)務(wù)模塊通過(guò)ZeroMQ進(jìn)行數(shù)據(jù)共享交換,ZeroMQ將不同的主題分配給不同的業(yè)務(wù)模塊,各業(yè)務(wù)模塊的數(shù)據(jù)按照分配的主題進(jìn)行封裝,各業(yè)務(wù)模塊只需要根據(jù)特定的主題即可實(shí)現(xiàn)對(duì)應(yīng)數(shù)據(jù)的共享交互?;赯eroMQ的訂閱發(fā)布模式支持可靠實(shí)時(shí)的數(shù)據(jù)傳輸,發(fā)布方與訂閱方根據(jù)相應(yīng)的主題進(jìn)行消息的發(fā)布共享,通過(guò)ZeroMQ消息通信庫(kù),可以實(shí)現(xiàn)各業(yè)務(wù)模塊之間數(shù)據(jù)共享交換的松耦合和高效性。
ZeroMQ技術(shù)能夠?qū)⒏鳂I(yè)務(wù)模塊要共享交換的數(shù)據(jù)封裝成消息,在任何應(yīng)用程序中以接近零的消耗來(lái)開展工作,是不需要其他的依賴就可以連接的庫(kù),無(wú)需額外的變動(dòng)部件,沒(méi)有額外的風(fēng)險(xiǎn),能夠運(yùn)行在任何操作系統(tǒng)上,能以任何編程語(yǔ)言開始工作。
2.2 基于ZeroMQ消息通信庫(kù)的運(yùn)用需求
空管數(shù)據(jù)共享交換平臺(tái)內(nèi)部數(shù)據(jù)的傳輸策略我們有很多備選方案,并對(duì)一些常用的數(shù)據(jù)傳輸共享策略做了對(duì)比,綜合考慮下,ZeroMQ消息通信庫(kù)可以滿足空管數(shù)據(jù)傳輸共享的實(shí)時(shí)性和可靠性要求,可以降低網(wǎng)絡(luò)編程的復(fù)雜性,與平臺(tái)無(wú)關(guān),其接口實(shí)現(xiàn)相對(duì)簡(jiǎn)單、可行。因此我們采用基于ZeroMQ消息通信庫(kù)的數(shù)據(jù)傳輸共享策略。
數(shù)據(jù)共享交換平臺(tái)各業(yè)務(wù)模塊通過(guò)RtmsgBus接口調(diào)用RtmsgBus,RtmsgBus再通過(guò)ZeroMQ/PGM進(jìn)行消息接收與發(fā)送,ZeroMQ/PGM調(diào)用相應(yīng)的操作系統(tǒng)函數(shù)完成消息接收與發(fā)送工作。RtmsgBus由外部接口模塊、消息發(fā)送接收模塊、監(jiān)視模塊、日志模塊、配置模塊、平臺(tái)無(wú)關(guān)模塊構(gòu)成。
三、通信測(cè)試3.1 時(shí)延測(cè)試
空管數(shù)據(jù)共享交換平臺(tái)要求數(shù)據(jù)共享能夠滿足不同數(shù)據(jù)的時(shí)延要求,雷達(dá)監(jiān)視數(shù)據(jù)、氣象數(shù)據(jù)都要求實(shí)時(shí)傳輸,空管數(shù)據(jù)共享平臺(tái)采用Rtmsgbus通信庫(kù)可以實(shí)現(xiàn)消息的實(shí)時(shí)傳輸。本節(jié)就空管數(shù)據(jù)共享平臺(tái)監(jiān)視數(shù)據(jù)接收轉(zhuǎn)發(fā)以及多路雷達(dá)數(shù)據(jù)融合轉(zhuǎn)發(fā)功能進(jìn)行了時(shí)延測(cè)試。如圖1所示。
其中,時(shí)延均值為4.8ns,空管系統(tǒng)對(duì)監(jiān)視數(shù)據(jù)的處理指標(biāo)為小于1s的處理時(shí)延,因此空管數(shù)據(jù)共享交換平臺(tái)能夠滿足不同數(shù)據(jù)的傳輸要求。
3.2 傳輸能力測(cè)試
空管數(shù)據(jù)共享交換平臺(tái)數(shù)據(jù)量大,對(duì)于大量數(shù)據(jù)的接收轉(zhuǎn)發(fā)以及存儲(chǔ)能力是重要的一環(huán),空管數(shù)據(jù)共享平臺(tái)針對(duì)大量數(shù)據(jù)的壓力測(cè)試結(jié)果如表1所示:
可以看出其丟包率不大于0.30%,空管系統(tǒng)對(duì)錯(cuò)漏數(shù)據(jù)包的標(biāo)準(zhǔn)為不高于1%,因此空管數(shù)據(jù)共享交換平臺(tái)能夠滿足不同數(shù)據(jù)共享的可靠性要求。
四、結(jié)束語(yǔ)
基于ZeroMQ云時(shí)代的極速消息通信庫(kù)不僅可以解決消息傳遞中出現(xiàn)的一系列懸而未決的問(wèn)題,還可以使得程序變得更加簡(jiǎn)潔明了,可以提高系統(tǒng)的擴(kuò)展性,易維護(hù)性??展芟到y(tǒng)是一個(gè)復(fù)雜而龐大的系統(tǒng),運(yùn)用ZeroMQ通信庫(kù)可以顯著提高系統(tǒng)的運(yùn)行效率,降低系統(tǒng)的耦合性,在實(shí)際運(yùn)用中得到了很好地反饋。
目前空管系統(tǒng)對(duì)于ZeroMQ搭建的可靠傳輸模式尚不夠完善,未來(lái)的工作需要盡可能地完善ZeroMQ的可靠傳輸運(yùn)用。
參 考 文 獻(xiàn)
[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的分布式系統(tǒng)[J].電子測(cè)試.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] 袁新顏.數(shù)據(jù)交換平臺(tái)的數(shù)據(jù)交換模式淺析[J].福建電腦.2011.
[5] 陳增強(qiáng),郭嘉琳,劉忠信,等.具有斷點(diǎn)續(xù)傳功能的文件傳輸系統(tǒng)的設(shè)計(jì)與關(guān)鍵技術(shù)[J].計(jì)算機(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í)空管系統(tǒng)間共享飛行數(shù)據(jù)表示的研究[J].理論與探索.2010.
[8] 李元熙,基于TCP/UDP的計(jì)算機(jī)通訊系統(tǒng)實(shí)現(xiàn)[J].無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào).2004.