馮劍塵 柳中華
(92493部隊(duì) 葫蘆島 125000)
基于OpenDDS的中間件實(shí)時(shí)通信機(jī)制擴(kuò)展設(shè)計(jì)
馮劍塵 柳中華
(92493部隊(duì) 葫蘆島 125000)
在仿真試驗(yàn)領(lǐng)域,隨著參試系統(tǒng)實(shí)時(shí)性和集成程度的提高,需對通信中間件軟件進(jìn)行實(shí)時(shí)擴(kuò)展改造,論文的目標(biāo)是依托OpenDDS技術(shù),對基于ACE結(jié)構(gòu)的中間件進(jìn)行實(shí)時(shí)通信機(jī)制擴(kuò)展,使虛實(shí)合成試驗(yàn)系統(tǒng)在傳輸中能夠快速高效地按需配置,提高中間件信息傳輸?shù)膶?shí)時(shí)性,擴(kuò)展中間件軟件對實(shí)時(shí)仿真、試驗(yàn)領(lǐng)域的支持。
DDS; 中間件; 實(shí)時(shí)通信機(jī)制擴(kuò)展
Class Number TP391
在仿真、測試與虛擬試驗(yàn)領(lǐng)域,伴隨著HLA、TENA等技術(shù)的廣泛應(yīng)用,系統(tǒng)內(nèi)部及系統(tǒng)間的信息傳輸對于實(shí)時(shí)性的要求越來越高,因此,建立實(shí)時(shí)性強(qiáng)、可靠性高、安全性好的信息傳輸中間件,提高系統(tǒng)互聯(lián)能力,滿足系統(tǒng)內(nèi)各種信息交換和共享需求,并解決應(yīng)用軟件之間的數(shù)據(jù)共享和集成問題是該領(lǐng)域亟待解決的問題。
本文的目標(biāo)是依托DDS(Data Distribution Service)技術(shù)進(jìn)行基于ACE架構(gòu)的中間件實(shí)時(shí)通信機(jī)制擴(kuò)展研究,提高中間件信息傳輸?shù)膶?shí)時(shí)性,擴(kuò)展傳輸體系對實(shí)時(shí)仿真、試驗(yàn)領(lǐng)域的支持。
DDS具有松散耦合、處理復(fù)雜數(shù)據(jù)流能力強(qiáng)、分發(fā)效率高、容錯(cuò)性好以及動(dòng)態(tài)可配置等特點(diǎn)。DDS定義了以數(shù)據(jù)為中心的發(fā)布/訂閱(Data Centric Publish-Subscribe,DCPS)機(jī)制[1],以數(shù)據(jù)為中心的發(fā)布/訂閱模型基于全局?jǐn)?shù)據(jù)空間(Global Data Space)的概念,如圖1所示。
在DDS中所有對該空間中的數(shù)據(jù)感興趣的應(yīng)用程序都可以接入。向這個(gè)數(shù)據(jù)空間提供信息的應(yīng)用程序叫做發(fā)布者(Publisher),它公布自己所提供數(shù)據(jù)的屬性和類型;從數(shù)據(jù)空間中獲取數(shù)據(jù)的應(yīng)用程序叫做訂閱者(Subscriber),它公布自己希望接收的數(shù)據(jù)的屬性和類型。發(fā)布者和訂閱者并不需要知道彼此的位置,只要它們數(shù)據(jù)的屬性和類型能夠成功匹配,它們之間就會成功建立一個(gè)數(shù)據(jù)收發(fā)通道。每當(dāng)發(fā)布者將新數(shù)據(jù)發(fā)送到這個(gè)全局?jǐn)?shù)據(jù)空間,中間件就會把信息轉(zhuǎn)發(fā)給所有感興趣的訂閱者,訂閱者就可以從全局?jǐn)?shù)據(jù)空間中去獲取自己感興趣的數(shù)據(jù)[2]。
圖1 以數(shù)據(jù)為中心的發(fā)布/訂閱模型
2.1 DDS規(guī)范與體系結(jié)構(gòu)
DDS規(guī)范包括域參與者、發(fā)布者、訂閱者、數(shù)據(jù)寫入者、數(shù)據(jù)讀取者、主題和QoS(Quality of Service)等,其體系結(jié)構(gòu)如圖2所示。
圖2 DDS體系結(jié)構(gòu)
DDS使用域來劃分?jǐn)?shù)據(jù)通信的子空間,隸屬于同一個(gè)域的各個(gè)域參與者(Participant)可以互相通信,每個(gè)域參與者里面可以有一個(gè)或多個(gè)發(fā)布者或訂閱者,每個(gè)發(fā)布者里面可以有一個(gè)或多個(gè)數(shù)據(jù)寫入者(DataWriter),每個(gè)訂閱者里面也可以有一個(gè)或多個(gè)數(shù)據(jù)讀取者(DataReader)。數(shù)據(jù)寫入者通過數(shù)據(jù)通道將數(shù)據(jù)發(fā)送到相應(yīng)的數(shù)據(jù)讀取者處,數(shù)據(jù)讀取者則從數(shù)據(jù)通道中獲取自己感興趣的數(shù)據(jù),數(shù)據(jù)寫入者和數(shù)據(jù)讀取者通過主題(Topic)和QoS進(jìn)行匹配和建立聯(lián)系,一般每個(gè)數(shù)據(jù)寫入者或數(shù)據(jù)讀取者只寫入或讀取一種類型的數(shù)據(jù)。
2.2 DCPS行為模式與QoS
DCPS行為模式包含發(fā)布操作和訂閱操作兩部分。發(fā)布操作定義了從應(yīng)用更新數(shù)據(jù)到將數(shù)據(jù)分發(fā)到訂閱者的過程。訂閱操作定義了從接收數(shù)據(jù)到將數(shù)據(jù)傳遞到應(yīng)用的過程。由于數(shù)據(jù)發(fā)布服務(wù)的目標(biāo)是使應(yīng)用能獲取正確數(shù)據(jù),為了滿足應(yīng)用對數(shù)據(jù)需求的多樣性,DCPS設(shè)計(jì)了兩級過濾機(jī)制:第一級是建立發(fā)布者和訂閱者間供需關(guān)系,發(fā)布者依據(jù)供需關(guān)系進(jìn)行數(shù)據(jù)分發(fā);第二級是在訂閱過程中建立內(nèi)容過濾機(jī)制,應(yīng)用可通過過濾器(filter)獲取滿足特定要求的數(shù)據(jù)。
在DCPS行為模式中,QoS參數(shù)控制了DDS模型的底層的通信機(jī)制,并作為發(fā)布方和訂購方之間的協(xié)定來確定發(fā)布方服務(wù)方式、訂購方服務(wù)等級,并判斷提供者能否滿足要求,然后建立通信連接,或者給出不相容錯(cuò)誤提示,提高通信質(zhì)量。
3.1 DDS產(chǎn)品選擇
DDS自O(shè)MG發(fā)布相關(guān)標(biāo)準(zhǔn)以來己得到許多提供商和最終用戶的支持,目前已經(jīng)有的發(fā)布的產(chǎn)品有[3]:
1) RTI DDS:由美國RTI公司開發(fā),目前全球范圍內(nèi)超過500個(gè)項(xiàng)目的廣泛應(yīng)用和部署,支持Windows、Linux、VxWorks等多種操作系統(tǒng),由于是商用軟件,成本相對較高。
2) OpenSplice DDS:最初由Thales開發(fā),在2006年被PT(Prism Technologies)獲得,主要的應(yīng)用在Tacticos項(xiàng)目(Thales的戰(zhàn)斗管理系統(tǒng))。
3) OpenDDS:對象管理組織OMG的實(shí)時(shí)數(shù)據(jù)分發(fā)系統(tǒng)的C++開源實(shí)現(xiàn)。OpenDDS本身使用C++開發(fā),并通過JNDI技術(shù)兼容JMS標(biāo)準(zhǔn)。OpenDDS為了實(shí)現(xiàn)跨平臺特性而構(gòu)建于ACE抽象層。
4) MilSoftDDS:土耳其的MILSOFT Software Technologies公司開發(fā)的DDS應(yīng)用軟件。
由于基于ACE通訊框架的中間件與OpenDDS底層的ACE+TAO機(jī)制可以兼容[4~5]。此外,從商業(yè)角度考慮,采用OpenDDS這種免費(fèi)開源的數(shù)據(jù)分發(fā)服務(wù)軟件也有利于系統(tǒng)接口和支撐軟件平臺的推廣應(yīng)用。
3.2 DDS應(yīng)用模式選擇
OpenDDS與現(xiàn)有中間件在功能上都位于負(fù)責(zé)信息傳輸?shù)闹虚g件層,應(yīng)用OpenDDS有如下兩種應(yīng)用模式[6]:
應(yīng)用模式一:使用OpenDDS替代原有基于ACE架構(gòu)中間件,資源直接調(diào)用OpenDDS進(jìn)行數(shù)據(jù)傳輸。該模式應(yīng)用時(shí)需要根據(jù)系統(tǒng)和資源的具體情況進(jìn)行域、主題、訂閱/發(fā)布機(jī)制、數(shù)據(jù)寫入/讀取代碼的編寫。
應(yīng)用模式二:使用OpenDDS作為原有中間件的一種底層通信機(jī)制,保留現(xiàn)有的訂閱/發(fā)布機(jī)制和標(biāo)準(zhǔn)接口服務(wù),該模式需要對OpenDDS強(qiáng)數(shù)據(jù)類型進(jìn)行通用化處理。
兩種應(yīng)用模式下的中間件層次如圖3所示。
圖3 基于DDS的中間件應(yīng)用模式
應(yīng)用模式一下,直接應(yīng)用OpenDDS替代中間件作為底層通信框架會使得中間件喪失靈活性、重用性和可擴(kuò)展性,增大網(wǎng)絡(luò)開銷,不利于其發(fā)展和推廣應(yīng)用。
應(yīng)用模式二下,主要缺點(diǎn)是由于需要對OpenDDS強(qiáng)數(shù)據(jù)類型進(jìn)行通用化處理,所以會犧牲一定的信息傳輸實(shí)時(shí)性,但具有以下優(yōu)點(diǎn)[7]:
1) 保持中間件接口不變,現(xiàn)有的各種資源無需做任何修改即可應(yīng)用,繼承了現(xiàn)有平臺免編程系統(tǒng)構(gòu)建的模式。
2) 現(xiàn)有的基于內(nèi)容的訂閱/發(fā)布模式得以保留,支持對主題下的部分內(nèi)容進(jìn)行興趣訂閱,提高信息傳輸效率。
3) 現(xiàn)有的對象模型結(jié)構(gòu)可繼續(xù)使用,支持繼承和組合關(guān)系。
綜上所述,本文采用應(yīng)用模式二進(jìn)行開發(fā),即在保留現(xiàn)有的訂閱/發(fā)布機(jī)制和標(biāo)準(zhǔn)接口服務(wù)的基礎(chǔ)上,使用OpenDDS作為原中間件的一種底層通信機(jī)制。
圖4給出了基于DDS的中間件通信框架,圖中陰影區(qū)域標(biāo)出的為OpenDDS提供的功能模塊。
4.1 軟件總體結(jié)構(gòu)
為保證原中間件通用接口不發(fā)生變化,采用插件模式引入DDS作為底層通信設(shè)施,每個(gè)系統(tǒng)應(yīng)用(對應(yīng)一個(gè)試驗(yàn)方案文件)會產(chǎn)生一個(gè)插件實(shí)現(xiàn)文件(DLL格式)。同時(shí),為保證原中間件不經(jīng)過代碼編譯過程即可使用插件實(shí)現(xiàn)文件,插件的外部接口必須符合特定標(biāo)準(zhǔn)[8~9]。
圖4 基于OpenDDS的中間件通信框架
由于DDS在發(fā)布/訂閱、數(shù)據(jù)寫入和讀出過程中的強(qiáng)類型要求,即要求為每個(gè)數(shù)據(jù)結(jié)構(gòu)產(chǎn)生對應(yīng)的類型對象、數(shù)據(jù)讀對象和數(shù)據(jù)寫對象,因此根據(jù)每個(gè)試驗(yàn)方案中的數(shù)據(jù)結(jié)構(gòu)(對象模型)自動(dòng)生成上述對應(yīng)的對象代碼并自動(dòng)進(jìn)行后臺編碼編譯就是必須的要求。
基于上述要求,擴(kuò)展改造的總體結(jié)構(gòu)如圖5所示。
圖5 軟件總體結(jié)構(gòu)
整個(gè)系統(tǒng)軟件由自動(dòng)代碼生成模塊、自動(dòng)代碼編譯模塊、DDS插件模板組成,最終目標(biāo)文件是基于DDS的試驗(yàn)方案運(yùn)行插件(DLL)。在系統(tǒng)運(yùn)行前,首先需要根據(jù)試驗(yàn)方案文件(sys文件,由中間件生成)進(jìn)行自動(dòng)代碼生成,然后通過自動(dòng)代碼編譯模塊加載生成的工程代碼和DDS插件模板,最終生成目標(biāo)文件。
在系統(tǒng)運(yùn)行中,軟件通過加載生成的基于DDS的試驗(yàn)方案運(yùn)行插件實(shí)現(xiàn)基于DDS的信息傳輸過程,在該過程中基于DDS的試驗(yàn)方案運(yùn)行插件需要通過加載試驗(yàn)方案文件自動(dòng)執(zhí)行聲明管理服務(wù)和對象管理服務(wù)。
4.2 DDS插件模板
圖6為DDS插件模板類圖,主要包括DDS試驗(yàn)方案解析器、DDS服務(wù)器、DDS數(shù)據(jù)接收器和DDS數(shù)據(jù)管理器組成。
4.3 自動(dòng)代碼生成模塊
自動(dòng)代碼生成模塊根據(jù)平臺軟件生成的試驗(yàn)方案文件(sys),生成DDS系統(tǒng)信息傳輸所需要的IDL文件、數(shù)據(jù)類型注冊代碼、數(shù)據(jù)寫入代碼和數(shù)據(jù)讀取代碼,圖7給出了自動(dòng)代碼生成過程。
圖6 DDS插件模板類圖
圖7 自動(dòng)代碼生成過程
4.4 自動(dòng)代碼編譯模塊
DDS插件模板在經(jīng)過自動(dòng)代碼生成模塊處理后,生成若干分散的源文件和頭文件(包括IDL文件、DDS服務(wù)器類、DDS數(shù)據(jù)管理器類、DDS數(shù)據(jù)接收器類、DDS試驗(yàn)方案解析器類、DDS服務(wù)接口文件等),若中間件直接調(diào)用生成的文件則需要其支持編譯模式。為保證中間件現(xiàn)有主程序不需要針對具體系統(tǒng)進(jìn)行編譯,采用可動(dòng)態(tài)加載的DLL模式封裝上述生成的文件。為將上述分散文件編譯為DLL,需要在自動(dòng)代碼編譯模塊為其建立獨(dú)立的工程文件,配置編譯、目標(biāo)參數(shù)等過程[10]。
整個(gè)軟件在應(yīng)用時(shí)分為兩個(gè)模塊,一個(gè)是DDS自動(dòng)代碼生成及自動(dòng)代碼編譯模塊,該模塊是標(biāo)準(zhǔn)C語言接口的動(dòng)態(tài)鏈接庫(DLL),提供由試驗(yàn)方案文件生成對應(yīng)的基于DDS的試驗(yàn)方案插件的功能。另一個(gè)模塊即所生成的基于DDS的試驗(yàn)方案插件(其存在形式也是標(biāo)準(zhǔn)C語言接口的動(dòng)態(tài)鏈接庫),該模塊由中間件加載使用,支持底層為DDS的信息傳輸功能,整個(gè)系統(tǒng)的應(yīng)用模式如圖8所示。
圖8 系統(tǒng)的應(yīng)用模式
中間件實(shí)時(shí)通信機(jī)制擴(kuò)展應(yīng)在現(xiàn)有的體系結(jié)構(gòu)下進(jìn)行,以現(xiàn)有的試驗(yàn)方案文件為運(yùn)行支持文件,遵循免編程的系統(tǒng)構(gòu)建方式。擴(kuò)展后的中間件接口保持不變,能夠支持現(xiàn)有的基于ACE和新擴(kuò)展的基于DDS的通信機(jī)制,能夠?qū)崿F(xiàn)基于主題和基于內(nèi)容的信息發(fā)布/訂閱功能,并通過可擴(kuò)展的QoS策略控制信息傳遞質(zhì)量。
1) 免編程基于DDS的信息交互機(jī)制,集自動(dòng)代碼生成和自動(dòng)代碼編譯于一體。在保證體系結(jié)構(gòu)不變的條件下,徹底解決了DDS平臺的應(yīng)用問題。
2) 多系統(tǒng)多實(shí)例并行運(yùn)行,支持基于內(nèi)容與基于主題的發(fā)布/訂閱模式,數(shù)據(jù)傳輸效率高,應(yīng)用方便。
[1] 裘楷,沈棟,李娜,等.基于DCPS模型的數(shù)據(jù)分發(fā)服務(wù)DDS的研究[J].電子科技,2006,206(12):70-71.
[2] 姚兵,蔡婷,李峻林,等.基于DDS模型的數(shù)據(jù)分發(fā)中間件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(3):620-621.
[3] OMG Data Distribution Service for Realtime Systems Version 1.2[R]. Feb,2007.
[4] TAO Developers Guide Excerpt Object Computing[R]. Nov,2007.
[5] OMG. Real-time CORBA Specification[R]. Version1.2, Jan,2005.
[6] 張大海,賴蘭劍,陳鼎才.DDS在分布式系統(tǒng)仿真中的應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(3):251-252.
[7] 歐陽軍,蔡志明,王希敏.基于DDS中間件的性能測試[J].2011,209(11):137-138.
[8] 胡鈺銑,王希敏.基于實(shí)時(shí)CORBA與DDS的發(fā)布/訂閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:海軍工程大學(xué)碩士學(xué)位論文,2007:78-87.
[9] 俞嶺,彭艦,劉錦德.CORBA中間件的實(shí)時(shí)擴(kuò)展[J].計(jì)算機(jī)應(yīng)用研究,2003,9:92-93.
[10] 費(fèi)洪曉,歐陽偉.企業(yè)CORBA中間件的性能分析及優(yōu)化方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(3):13.
Design of Real-time Communication Mechanism of Middleware Based on OpenDDS
FENG Jianchen LIU Zhonghua
(No. 92493 Troops of PLA, Huludao 125000)
With real-time and integration degree of system improving in test range, the real-time performance on the middleware communications is needed to expand. This paper uses OpenDDS technique to expand the middleware based on the ACE structure, making the experimental system can be quickly and efficiently in the transmission of the virtual-real area, increasing the middleware information deliver efficiency, which expands support of realm in the emulation mode and test area for middleware based system structure.
DDS, middleware, real-time communication mechanism
2016年8月10日,
2016年9月30日
馮劍塵,男,碩士,高級工程師,研究方向:武器裝備試驗(yàn)總體。柳中華,男,碩士,工程師,研究方向:導(dǎo)彈武器系統(tǒng)仿真。
TP391
10.3969/j.issn.1672-9730.2017.02.024