王嘯,彭海維
摘 要:文章對DDS進(jìn)行了介紹,DDS實(shí)現(xiàn)了分布式環(huán)境中以數(shù)據(jù)為中心的數(shù)據(jù)實(shí)時(shí)傳輸,相比其他中間件,具有較好的靈活性、實(shí)時(shí)性和擴(kuò)展性,所以DDS適用于對數(shù)據(jù)處理能力要求較高的場景。通過對國產(chǎn)化LDDS產(chǎn)品進(jìn)行分析、優(yōu)化,給出了DDS適配通用消息總線的方案。該技術(shù)具有通用性,適用于DDS適配多種消息總線。結(jié)合RapidIO消息總線和國產(chǎn)化消息中間件LDDS,給出了具體的適配方案。經(jīng)優(yōu)化適配后,LDDS可以廣泛應(yīng)用于消息量大的實(shí)時(shí)業(yè)務(wù)場景。
關(guān)鍵詞:數(shù)據(jù)分發(fā)服務(wù);發(fā)布/訂閱;中間件;RapidIO
在信息量爆炸的時(shí)代,如何實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)快速通信以及如何對其進(jìn)行高效的管理顯得尤為重要。尤其在軍事領(lǐng)域,為實(shí)現(xiàn)軍事裝備武器系統(tǒng)快速適應(yīng)新環(huán)境、動態(tài)重構(gòu)新功能、及時(shí)應(yīng)對新威脅,未來的軍事電子裝備勢必從單平臺向分布式多種異構(gòu)平臺統(tǒng)一協(xié)同處理發(fā)展;從相對封閉、單一功能向開放式、多任務(wù)、多功能一體化方向發(fā)展;從預(yù)先定義的固定信息流處理向智能化、軟件化方向發(fā)展?;诖?,就必須解決異構(gòu)分布式系統(tǒng)間的互聯(lián)、互通和互操作問題。
消息中間件是當(dāng)前一項(xiàng)實(shí)現(xiàn)異構(gòu)系統(tǒng)之間快速訪問的關(guān)鍵技術(shù),可以屏蔽各個(gè)異構(gòu)平臺(包含軟件和硬件)的差異,對應(yīng)用者提供統(tǒng)一的標(biāo)準(zhǔn)通信接口,只需要關(guān)注業(yè)務(wù)本身的研究與開發(fā),不需要感知具體平臺的異構(gòu)性。目前這種開放式架構(gòu)的消息中間件在我軍相關(guān)設(shè)備系統(tǒng)和物聯(lián)網(wǎng)中已經(jīng)得到廣泛的應(yīng)用。但現(xiàn)狀是大多數(shù)消息中間件都是基于以太網(wǎng)實(shí)現(xiàn)的,而實(shí)際環(huán)境中,不僅需要支持以太網(wǎng)協(xié)議,還有高速串行通信總線(RapidIO)協(xié)議、增強(qiáng)型周邊設(shè)備互連(PCIe)協(xié)議等[1]。
本文基于國產(chǎn)化數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service,DDS)的產(chǎn)品,在LDDS上對多種通信總線進(jìn)行適配,并提出了通用的適配解決方案,可以快速適配多種消息總線,豐富了LDDS產(chǎn)品的功能,并使其通信性能得到了大幅的提高,滿足了工業(yè)和軍事設(shè)備上的通信要求。
1 DDS及其特點(diǎn)
1.1 DDS介紹
為了能解決當(dāng)前環(huán)境中各個(gè)異構(gòu)分布式系統(tǒng)之間互聯(lián)和互通的問題,通常采用中間件技術(shù)。中間件技術(shù)可以屏蔽底層操作系統(tǒng)和物理網(wǎng)絡(luò)的差異,為應(yīng)用層用戶提供統(tǒng)一的操作接口,使得各個(gè)應(yīng)用能實(shí)現(xiàn)跨不同的系統(tǒng),跨不同的消息總線進(jìn)行通信。常見的中間件分為兩類:客戶端/服務(wù)器(Client/Serve,C/S)模式和面向消息。C/S模式的典型中間件是CORBA;面向消息中間件又分為發(fā)布/定義模型和消息隊(duì)列模式。
C/S模式的中間件,在系統(tǒng)中有中心節(jié)點(diǎn)存在,即服務(wù)器端。所有的客戶端都要把消息發(fā)送到服務(wù)端,客戶端之間不能直接通信,這樣服務(wù)端的消息量就會很大,對其性能要求很高。這種C/S模式的中間件技術(shù)已經(jīng)不能滿足當(dāng)前分布式業(yè)務(wù)對實(shí)時(shí)性的需求,且該模式有單點(diǎn)故障的風(fēng)險(xiǎn),若服務(wù)器節(jié)點(diǎn)出現(xiàn)故障,不能工作,則整個(gè)系統(tǒng)的業(yè)務(wù)就癱瘓了。為了解決上述的問題,對象管理組織主導(dǎo)發(fā)布了DDS協(xié)議規(guī)范。
DDS為當(dāng)前完整的通信系統(tǒng)提供了很好的基礎(chǔ)保障服務(wù),尤其在現(xiàn)代工業(yè)或軍事電子通信系統(tǒng)中,通過DDS可以快速構(gòu)建各種不同的服務(wù)之間實(shí)時(shí)、高效通信。同時(shí)為滿足不同通信業(yè)務(wù)場景的需求,DDS還提供了大量的服務(wù)質(zhì)量策略(Quality of Service,QoS)[2]。
1.2 以數(shù)據(jù)為中心的發(fā)布—訂閱層
DDS規(guī)范共由兩個(gè)層次組成,分別為DCPS層和DLRL層。其中,DCPS層是指以數(shù)據(jù)為中心的發(fā)布/訂閱層,規(guī)范了DDS的通信服務(wù)和對用戶提供通信的標(biāo)準(zhǔn)API接口;DLRL是指數(shù)據(jù)本地重構(gòu)層,其位于DCPS之上,是可選層。目前市面上的DDS產(chǎn)品,包括RTI-DDS,OpenSplice DDS等商用版本的DDS都沒有實(shí)現(xiàn)DLRL。
DCPS是DDS的核心。DCPS層是基于全局?jǐn)?shù)據(jù)空間(Global Data Space,GDS)的概念,并定義了域、域參與者、發(fā)布者、訂閱者、主題、數(shù)據(jù)寫者、數(shù)據(jù)讀者和數(shù)據(jù)等對象。每個(gè)數(shù)據(jù)寫者對應(yīng)一個(gè)發(fā)布者和主題;每個(gè)數(shù)據(jù)讀者對應(yīng)一個(gè)訂閱者和主題;每個(gè)發(fā)布者和訂閱者都對應(yīng)一個(gè)數(shù)據(jù)域;每個(gè)域可以有多個(gè)不同的訂閱者和發(fā)布者。其中,域限定了DDS各個(gè)實(shí)體之間通信的范圍,DDS中域的意義就是可以在一個(gè)物理范圍內(nèi)劃分出多個(gè)不同邏輯范圍,相互之間隔離;發(fā)布端和訂閱端只有在同一個(gè)域中才能相互通信。
在DDS通信中,通過域參與者完成相互的發(fā)現(xiàn)。主題是整個(gè)DDS中發(fā)布和訂閱的關(guān)鍵,在發(fā)布端和訂閱端建立相互關(guān)聯(lián)的過程中,發(fā)布者首先發(fā)送主題信息,訂閱端的DDS中間件檢查發(fā)布端發(fā)送的主題是否和本端吻合,從而確定是否建立發(fā)布和訂閱的連接[3]。
在整個(gè)DDS的通信過程中,DCPS層還可以通過設(shè)置服務(wù)質(zhì)量策略QoS,來對具體要傳輸?shù)臄?shù)據(jù)進(jìn)行相應(yīng)的設(shè)置。DDS協(xié)議規(guī)范利用了QoS來控制對各類數(shù)據(jù)對可靠性、時(shí)延和性能等要求,真正實(shí)現(xiàn)了以數(shù)據(jù)為中心。在DDS中,只有發(fā)布端的QoS和訂閱端的QoS相互匹配,雙方才能建立相應(yīng)的數(shù)據(jù)連接進(jìn)行通信。另外,為了滿足不同的DDS產(chǎn)品互聯(lián),DDS規(guī)范使用了接口定義語音(Interface Definition Language,IDL)來定義數(shù)據(jù)接口,可以提供并定義通用的和復(fù)雜的數(shù)據(jù)類型。
1.3 DDS優(yōu)勢
采用發(fā)布/訂閱模式的DDS,其最大的優(yōu)勢是就是松耦合,可以很好地兼容系統(tǒng)中各個(gè)組件、實(shí)體以及操作系統(tǒng)的異構(gòu)性。DDS是基于數(shù)據(jù)為中心的數(shù)據(jù)分布消息中間件,雖然不能適合所有的業(yè)務(wù)場景,但在工業(yè)物聯(lián)網(wǎng)、軍事各類電子設(shè)備系統(tǒng)中還是比較適合采用的,DDS主要具有以下優(yōu)點(diǎn)[4]:
(1)低時(shí)延、高吞吐量。由于DDS采用的發(fā)布/訂閱的通信模式,沒有中心服務(wù)節(jié)點(diǎn)的概念,所以較其他通信模式的傳輸速度快。另外,底層實(shí)時(shí)傳輸協(xié)議(Real Time Streaming Protocol,RTPS),可以支持組播的方式發(fā)送數(shù)據(jù),具有高吞吐量[5]。
(2)支持動態(tài)發(fā)現(xiàn)。支持所有DDS節(jié)點(diǎn)動態(tài)加入域,不需要任何配置。
(3)支持主題過濾。訂閱者可以根據(jù)業(yè)務(wù)的需求,自行訂閱自己感興趣的主題數(shù)據(jù)。
(4)同操作系統(tǒng)無關(guān)。DDS支持Windows,Linux,VxWorks、中標(biāo)麒麟以及麒麟等多款國產(chǎn)化操作系統(tǒng)。
(5)對報(bào)文大小無限制??梢詡魉蛿?shù)字節(jié)到數(shù)百兆的數(shù)據(jù)包,DDS底層自動完成大數(shù)據(jù)包的拆包、組包的工作,應(yīng)用者無須感知。
(6)較強(qiáng)的容錯(cuò)機(jī)制。DDS所有的節(jié)點(diǎn)都是平等的,任何DDS節(jié)點(diǎn)的加入、退出,其他節(jié)點(diǎn)均不受影響,方便了應(yīng)用可以根據(jù)其業(yè)務(wù)的需求,進(jìn)行彈性的伸縮。
(7)豐富的QoS策略。DDS處理復(fù)雜的數(shù)據(jù)流能力較強(qiáng),可以通過不同的QoS參數(shù)信息,將數(shù)據(jù)設(shè)置為盡力傳輸、可靠傳輸?shù)?。通過對不同的數(shù)據(jù)設(shè)置不同的QoS策略,便于構(gòu)建綜合的復(fù)雜通信系統(tǒng)[6]。
2 基于DDS的消息總線通信的設(shè)計(jì)
以數(shù)據(jù)為中心的通信中間件LDDS實(shí)現(xiàn)了對底層各種異構(gòu)操作系統(tǒng)以及各種通信資源的屏蔽。目前LDDS數(shù)據(jù)發(fā)布和接收的傳輸類型支持共享內(nèi)存、UDP,RTPS和TCP,LDDS的架構(gòu)設(shè)計(jì)得非常靈活,所有傳輸類型都采用插件的方式,都可以單獨(dú)對外發(fā)布。
通過上面的DDS通信流程介紹,可以把DDS的主要的消息可以歸為兩類:控制消息(節(jié)點(diǎn)發(fā)現(xiàn)、心跳?;畹龋┖陀脩魳I(yè)務(wù)數(shù)據(jù)消息。LDDS適配其他消息總線,采用的控制消息走以太網(wǎng),所有的控制消息都保留原先的消息流程,僅對用戶數(shù)據(jù)的流向做變更調(diào)整。用戶數(shù)據(jù)通過指定的傳輸通道傳輸數(shù)據(jù),在另外一端接收數(shù)據(jù),并轉(zhuǎn)發(fā)給指定的數(shù)據(jù)讀者的對象實(shí)例進(jìn)行處理,在本文中,采用Tunnel來表示適配通用總線的傳輸方式,具體消息流向如圖1所示。
圖1 消息流向
在實(shí)際運(yùn)行中,用戶根據(jù)原先的方法進(jìn)行DDS節(jié)點(diǎn)發(fā)現(xiàn)等操作,在具體傳輸和接收消息時(shí),根據(jù)用戶設(shè)置的傳輸類型進(jìn)行選擇即可,由于LDDS的傳輸類型都是以插件形式實(shí)現(xiàn)的,因此,軟件架構(gòu)的角度很靈活,非常便于擴(kuò)充不同的傳輸類型。
3 基于DDS的總線通信的實(shí)現(xiàn)
3.1 RapidIO介紹
現(xiàn)在的系統(tǒng)越來越復(fù)雜,功能也越來越多,且數(shù)據(jù)量也成倍數(shù)增加,同時(shí)對消息的實(shí)時(shí)性也要求很高,傳統(tǒng)的總線已經(jīng)無法滿足業(yè)務(wù)的需求。新一代的高性能數(shù)據(jù)總線技術(shù)如RapidIO,F(xiàn)C等逐步替換原先的通信消息總線了。
RapidIO采用的是3層分級式體系結(jié)構(gòu),分別為物理層、傳輸層和邏輯層。最底層為物理層,規(guī)范定義了數(shù)據(jù)傳輸?shù)奈锢斫Y(jié)構(gòu)和方式,對流量的控制、低級錯(cuò)誤的管理、分組傳輸機(jī)制以及所有的電氣特性等均進(jìn)行了詳細(xì)規(guī)范。中間層為傳輸規(guī)范層,主要是定義RapidIO地址空間規(guī)范和數(shù)據(jù)包在傳輸過程中所必需的路由信息。最高層為RapidIO的邏輯層,主要是對RapidIO協(xié)議、數(shù)據(jù)包格式、操作步驟和數(shù)據(jù)指令等進(jìn)行了規(guī)范定義[7]。
RapidIO的操作是基于請求和響應(yīng)的,若源端器件發(fā)送一個(gè)事務(wù),則會被送到目的端器件,目的端器件會產(chǎn)生一個(gè)響應(yīng)事務(wù)回傳到源端器件,從而結(jié)束本次操作。在傳輸過程中,會使用控制符號對每一跳進(jìn)行確認(rèn)。
RapidIO是一種以高性能包交換為基礎(chǔ)的技術(shù),在系統(tǒng)中,通過枚舉的方式為所有的RapidIO器件分配唯一的ID,該ID是所有RapidIO器件之間通信的標(biāo)識,同時(shí)為各個(gè)器件之間交換數(shù)據(jù)的路由表設(shè)置和建立RapidIO路由提供了基礎(chǔ)。
3.2 RapidIO消息接口
RapidIO協(xié)議支持4種數(shù)據(jù)傳輸方式,分別為消息傳輸、全局共享、流數(shù)據(jù)和I/O。RapidIO的接口主要有門鈴、直接內(nèi)存存?。―irect Memory Access,DMA)和消息等。目前,在常規(guī)的業(yè)務(wù)場景下,使用DMA方式通信較多;在使用DMA功能時(shí),需要知道目標(biāo)器件的內(nèi)存地址;根據(jù)內(nèi)存的映射機(jī)制,源器件可以直接讀寫目標(biāo)器件的存儲器[8]。
RapidIO協(xié)議并沒有像DDS協(xié)議規(guī)范一樣,統(tǒng)一規(guī)定RapidIO協(xié)議對外提供的API接口,因此各個(gè)RapidIO廠商對外提供的驅(qū)動接口都不盡相同。由于LDDS的通信架構(gòu)采用的是插件方式,為了LDDS適配RapidIO,本團(tuán)隊(duì)開發(fā)設(shè)計(jì)了獨(dú)立的RapidIO通信插件模塊,該模塊上層對接DDS,底層對接RapidIO驅(qū)動。為了使RapidIO通信插件模塊后續(xù)快速的適配不同廠商的RapidIO產(chǎn)品,對RapidIO接口進(jìn)行了抽象封裝,主要包括RapidIO的初始化、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收和資源釋放等消息接口。
3.3 LDDS適配RapidIO
RapidIO具備低時(shí)延、高吞吐量、高帶寬、高性能的特點(diǎn);能夠在8 bit位的路徑上提供10 Gbit/s的帶寬,RapidIO協(xié)議通常是由硬件實(shí)現(xiàn)的。在很多大業(yè)務(wù)數(shù)據(jù)場景下,傳統(tǒng)的千兆以太網(wǎng)已經(jīng)不能滿足業(yè)務(wù)的發(fā)展需求,比如在雷達(dá)前端數(shù)據(jù)處理時(shí),就需要通過RapidIO總線來快速的傳輸、處理業(yè)務(wù)數(shù)據(jù)。本文通過上面的方法,實(shí)現(xiàn)了LDDS適配RapidIO消息總線的功能。
目前雷達(dá)業(yè)務(wù)數(shù)據(jù)的場景中,所有的業(yè)務(wù)板上都有以太網(wǎng)網(wǎng)卡。本文采用RapidIO關(guān)聯(lián)IP地址方式,通過借助以太網(wǎng)來處理發(fā)現(xiàn)DDS節(jié)點(diǎn)等控制消息,在每個(gè)節(jié)點(diǎn)發(fā)現(xiàn)時(shí),會記錄存儲對端DDS節(jié)點(diǎn)的IP地址和端口號等相關(guān)信息。在發(fā)送消息時(shí),會根據(jù)選擇的數(shù)據(jù)傳輸方式,通過IP和RapidIO的映射關(guān)系,找出訂閱端對應(yīng)的目標(biāo)RapidIO的ID和接收地址后,發(fā)送給對應(yīng)的訂閱端,具體的RapidIO配置信息如表1所示。本方案會在訂閱端進(jìn)程中啟動一個(gè)或多個(gè)RapidIO接收消息的線程,把接收到的消息根據(jù)相應(yīng)的字段信息轉(zhuǎn)給對應(yīng)數(shù)據(jù)讀者對象處理,根據(jù)端口號來做標(biāo)識,每個(gè)數(shù)據(jù)讀者都會對應(yīng)一個(gè)端口號。
在常規(guī)的業(yè)務(wù)處理過程中,一般都會采用阻塞的方式處理數(shù)據(jù),即訂閱端等業(yè)務(wù)處理完一包數(shù)據(jù)后,才接收下一包數(shù)據(jù)。在實(shí)際應(yīng)用過程中發(fā)現(xiàn),由于消息量過快,導(dǎo)致訂閱端來不及處理,出現(xiàn)了丟棄消息的現(xiàn)象,為了解決該問題,提出采用二級緩存的方法,借鑒Linux內(nèi)核實(shí)現(xiàn)的KFIFO的思路,實(shí)現(xiàn)一個(gè)循環(huán)緩沖區(qū),極大降低了丟包率。
3.4 測試結(jié)果
通過上述的方法和優(yōu)化措施,LDDS適配了RapidIO消息總線,通過測試,目前可以滿足大部分業(yè)務(wù)系統(tǒng)的應(yīng)用要求。LDDS適配RapidIO吞吐量數(shù)據(jù)如表2所示。
4 結(jié)語
DDS是OMG組織為高性能的數(shù)據(jù)分發(fā)而制定的規(guī)范,在當(dāng)前各行中的應(yīng)用,已經(jīng)看到了其強(qiáng)大的功能和很高的應(yīng)用價(jià)值。本文提出了一種如何將現(xiàn)有的LDDS產(chǎn)品應(yīng)用到各類消息總線的實(shí)際現(xiàn)有業(yè)務(wù)系統(tǒng)中的通用設(shè)計(jì),并結(jié)合RapidIO消息總線進(jìn)行了詳細(xì)的說明和驗(yàn)證。通過該方法,可以極大提高在DDS適配各類消息總線的效率,減輕了程序開發(fā)復(fù)雜度,并提高了對底層傳輸技術(shù)的利用率,最大限度地兼容了現(xiàn)有業(yè)務(wù)系統(tǒng)組網(wǎng)物理環(huán)境,滿足了業(yè)務(wù)系統(tǒng)設(shè)計(jì)的需求。
國產(chǎn)化的消息中間件LDDS是完全自主可控,其為用戶提供了清晰的應(yīng)用程序接口,不僅簡化了程序開發(fā)的設(shè)計(jì)工作,更提高了系統(tǒng)在復(fù)雜環(huán)境和數(shù)據(jù)關(guān)鍵環(huán)境下的效率和性能,同時(shí)與高層體系架構(gòu)在規(guī)范上有著很大的兼容性。經(jīng)過不斷優(yōu)化和豐富其支持的底層傳輸消息總線類型,目前可以廣泛地應(yīng)用于各種工業(yè)物聯(lián)網(wǎng)、軍事各類電子設(shè)備系統(tǒng)中,滿足不同行業(yè)、領(lǐng)域的應(yīng)用需求。
作者簡介:王嘯(1985— ),男,江蘇南京人,工程師,碩士;研究方向:數(shù)據(jù)信息處理。
[參考文獻(xiàn)]
[1]劉巍,黃智勇.國產(chǎn)化實(shí)時(shí)通信中間件DDS的跨平臺實(shí)現(xiàn)和優(yōu)化技術(shù)[J].現(xiàn)代雷達(dá),2019(7):39-40.
[2]呂云飛,王旋,張軍.基于DDS技術(shù)的艦船平臺綜合管理系統(tǒng)[J].艦船科學(xué)技術(shù),2011(5):47-50.
[3]謝蓓,劉毅,曹萬華,等.實(shí)時(shí)系統(tǒng)數(shù)據(jù)分布服務(wù)DDS技術(shù)綜述[J].艦船電子工程,2006(2):16-18.
[4]蘇偉.DDS在嵌入式航電分布系統(tǒng)中的應(yīng)用研究[D].成都:西南交通大學(xué),2012.
[5]呂廣喆,邸海濤,甄超,等.機(jī)載分布式異構(gòu)網(wǎng)絡(luò)通信中間件研究[J].航空計(jì)算技術(shù),2016(5):132-135.
[6]楊傳順,錢幸存.實(shí)時(shí)數(shù)據(jù)分發(fā)系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2011(6):3-4.
[7]殷從月.基于RapidIO網(wǎng)絡(luò)的路由優(yōu)化與任務(wù)調(diào)度算法研究[D].鄭州:戰(zhàn)略支援部隊(duì)信息工程大學(xué),2018.
[8]熊峻峰,石和榮.基于開放式架構(gòu)的DDS研究與實(shí)現(xiàn)[J].國外電子測量技術(shù),2017(12):88-89.
Research and implementation of message bus communication based on DDS
Wang Xiao, Peng Haiwei
(Nanjing Les Electronic Equipment Co., Ltd., Nanjing 210014, China)
Abstract:This paper introduces the data distribution service (DDS), which realizes data-centric data real-time transmission in a distributed environment. Compared with other middleware, DDS has better flexibility, real-time and scalability, so DDS is suitable for the scenes with higher requirements on data processing capacity. Through the analysis and optimization of domestic LDDS products, the scheme of DDS adapting to general message bus is given. The technology described in this paper is specific and universal, which is suitable for DDS to adapt to a variety of message buses. Combining RapidIO message bus and domestic message middleware LDDS, the specific adaptive scheme is given. After optimization and adaptation, LDDS can be widely used in real-time business scenarios with a large number of messages.
Key words:data distribution service; publish/subscribe; middleware; RapidIO