杜會(huì)盈 毛洪川 胡爭(zhēng)爭(zhēng) 段永杰
摘 要 發(fā)布/訂閱通信模型—數(shù)據(jù)分發(fā)服務(wù)(DDS)是以數(shù)據(jù)為中心的通信模型,可以實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)高效地傳輸。文章研究了DDS規(guī)范的通信機(jī)制,分析了其發(fā)布和訂閱匹配的方法,提出了基于數(shù)據(jù)實(shí)體的DDS通信方式,該方式既能提高發(fā)布/訂閱的匹配能力,又能保證數(shù)據(jù)發(fā)送和接收的完整性、正確性及一致性。
關(guān)鍵詞 數(shù)據(jù)分發(fā)服務(wù)(DDS);發(fā)布;訂閱;數(shù)據(jù)實(shí)體
中圖分類號(hào) TN91 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1674-6708(2018)213-0090-03
隨著信息技術(shù)水平的高速發(fā)展,高速數(shù)據(jù)通信技術(shù)也不斷地進(jìn)行著信息化和數(shù)據(jù)化,從而帶來(lái)了海量信息數(shù)據(jù)的處理問(wèn)題。傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)傳輸方式,已滿足不了高速數(shù)據(jù)通信需要的實(shí)時(shí)性和和可靠性。為了保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)高效性,對(duì)象管理組織(OMG)[1-3]于2004年發(fā)布了第一個(gè)以數(shù)據(jù)為中心思想的發(fā)布/訂閱通信模型—數(shù)據(jù)分發(fā)服務(wù)(DDS)規(guī)范[4],提供了一個(gè)與平臺(tái)無(wú)關(guān)的數(shù)據(jù)模型。
文中在研究DDS規(guī)范的基礎(chǔ)上,分析了DDS發(fā)布/訂閱常用機(jī)制,提出基于數(shù)據(jù)實(shí)體的DDS數(shù)據(jù)分發(fā)方法,既保證了數(shù)據(jù)快速高效地分發(fā),又能保證發(fā)送和接收數(shù)據(jù)的正確性及完整性。
1 DDS數(shù)據(jù)分發(fā)服務(wù)
數(shù)據(jù)分發(fā)服務(wù)(Data Distribution Service),簡(jiǎn)稱DDS。它的目標(biāo)在于實(shí)現(xiàn)分布式系統(tǒng)中數(shù)據(jù)可以高效、可靠地分發(fā)傳輸。DDS規(guī)范標(biāo)準(zhǔn)化了分布式實(shí)時(shí)系統(tǒng)中數(shù)據(jù)發(fā)布、傳遞和接收的接口和行為,定義了以數(shù)據(jù)為核心的發(fā)布訂閱機(jī)制,并且提供了一個(gè)與平臺(tái)無(wú)關(guān)的數(shù)據(jù)模型。它包含兩層接口:底層的數(shù)據(jù)訂閱/發(fā)布層DCPS(DataCentric Publish-Subscribe)和可選的數(shù)據(jù)重構(gòu)層DLRL(Data Local ReconstructionLayer)[5-6]。數(shù)據(jù)重構(gòu)層DLRL是可選層,其主要負(fù)責(zé)將數(shù)據(jù)轉(zhuǎn)換為本地對(duì)象類型,以使用戶應(yīng)用層可以更方便地訪問(wèn)/處理數(shù)據(jù)。而數(shù)據(jù)發(fā)布/訂閱層DCPS是必須具備的,應(yīng)用層通過(guò)調(diào)用它來(lái)實(shí)現(xiàn)數(shù)據(jù)的發(fā)布和訂閱,實(shí)現(xiàn)應(yīng)用層數(shù)據(jù)的發(fā)送和接收。
發(fā)布/訂閱模型具體內(nèi)容包括DDS域(Domain)、信息主題(Topic)、發(fā)布者(Publisher)、數(shù)據(jù)寫(xiě)入者(DataWriter)、數(shù)據(jù)讀取者(DataReader)、訂閱者(Subscriber)。域是建立通信聯(lián)系的基本結(jié)構(gòu),只有同一域內(nèi)的組件才能夠進(jìn)行相互通信。每個(gè)域參與者里面可以有一個(gè)或多個(gè)發(fā)布者(Publisher)或訂閱者(Subscriber)。發(fā)布者是負(fù)責(zé)發(fā)布主題數(shù)據(jù)的組件,通過(guò)數(shù)據(jù)寫(xiě)入者將要發(fā)送數(shù)據(jù)內(nèi)容發(fā)布至數(shù)據(jù)空間。訂閱者是負(fù)責(zé)訂閱主題數(shù)據(jù)的組件,通過(guò)數(shù)據(jù)讀取者獲取所訂閱的主題數(shù)據(jù)內(nèi)容。DDS數(shù)據(jù)模型如圖1。
隨著發(fā)布/訂閱系統(tǒng)技術(shù)的不斷發(fā)展,在此過(guò)程中出現(xiàn)了各種各具特色的系統(tǒng),其表達(dá)能力也越來(lái)越強(qiáng)。發(fā)布/訂閱系統(tǒng)按照事件模型和訂閱模型可以分為基于通道、主題、內(nèi)容等模式。
基于通道和基于主題的發(fā)布/訂閱都是一種靜態(tài)的模式,僅提供了有限的表達(dá)能力。在基于通道的模式中,訂閱者不能指定接收通道中的部分事件;基于主題中,所有事件的內(nèi)部對(duì)訂閱者來(lái)說(shuō)都是黑盒子,訂閱者不能更細(xì)粒度地表達(dá)它只接收主題下的一部分事件。基于內(nèi)容的發(fā)布/訂閱系統(tǒng)[7-10]中,系統(tǒng)并不會(huì)先對(duì)事件進(jìn)行分類,而是根據(jù)事件本身的屬性進(jìn)行分類,系統(tǒng)需要根據(jù)訂閱條件來(lái)匹配大量事件,帶來(lái)很大負(fù)擔(dān)。
2 基于數(shù)據(jù)實(shí)體的DDS數(shù)據(jù)分發(fā)
2.1 數(shù)據(jù)實(shí)體
由于高速數(shù)據(jù)通信涉及的傳輸報(bào)文數(shù)據(jù)種類繁多及頻率高,故采用DDS數(shù)據(jù)分發(fā)服務(wù)。為了保證數(shù)據(jù)收發(fā)的高效性及正確性,提出了基于數(shù)據(jù)實(shí)體的DDS數(shù)據(jù)分發(fā)技術(shù)。
對(duì)需要經(jīng)過(guò)DDS進(jìn)行分發(fā)的的每一幀通信報(bào)文,定義一個(gè)數(shù)據(jù)結(jié)構(gòu),對(duì)該報(bào)文的數(shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu)后的數(shù)據(jù)類,稱為數(shù)據(jù)實(shí)體。
針對(duì)要進(jìn)行傳輸?shù)膱?bào)文內(nèi)容,采用數(shù)據(jù)結(jié)構(gòu)的定義方式。定義方式如下。
針對(duì)數(shù)據(jù)結(jié)構(gòu)內(nèi)容,重構(gòu)出通信數(shù)據(jù)對(duì)應(yīng)的DDS數(shù)據(jù)類實(shí)體,數(shù)據(jù)類實(shí)體中包含針對(duì)傳送數(shù)據(jù)內(nèi)容長(zhǎng)度及數(shù)據(jù)類型校驗(yàn)的類。數(shù)據(jù)實(shí)體類定義如下。
數(shù)據(jù)訂閱者和發(fā)布者針對(duì)發(fā)送的不同報(bào)文數(shù)據(jù),分別構(gòu)建對(duì)應(yīng)的數(shù)據(jù)實(shí)體。
2.2 發(fā)布和訂閱
針對(duì)上述要發(fā)送的數(shù)據(jù)實(shí)體,創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)實(shí)體的發(fā)布者和訂閱者。創(chuàng)建發(fā)布者和訂閱者時(shí),需指定數(shù)據(jù)發(fā)送的目的域、主題名、結(jié)構(gòu)體名、數(shù)據(jù)實(shí)體長(zhǎng)度。通過(guò)上述參數(shù)創(chuàng)建的發(fā)布者和訂閱者,可以實(shí)現(xiàn)發(fā)布者和訂閱者之間的最終快速匹配?;跀?shù)據(jù)實(shí)體的DDS通信示意圖如圖2。
發(fā)布者填寫(xiě)完善需要發(fā)送的數(shù)據(jù)結(jié)構(gòu)體對(duì)象,調(diào)用數(shù)據(jù)發(fā)送接口,經(jīng)過(guò)DDS中間件[11]時(shí),會(huì)對(duì)發(fā)送的長(zhǎng)度加以驗(yàn)證,保證發(fā)送數(shù)據(jù)的完整性。如果數(shù)據(jù)長(zhǎng)度不正確,則向發(fā)布者返回?cái)?shù)據(jù)發(fā)送失敗信息。如果數(shù)據(jù)完整,則通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。
訂閱者的DDS中間件接收到網(wǎng)絡(luò)數(shù)據(jù)信息時(shí),首先根據(jù)發(fā)布者和訂閱者匹配時(shí)的注冊(cè)信息對(duì)接收到的信息進(jìn)行完整性確認(rèn)。若接受長(zhǎng)度與匹配信息中的長(zhǎng)度參數(shù)一致,則向訂閱者轉(zhuǎn)發(fā)數(shù)據(jù)。否則丟棄該信息內(nèi)容。
3 結(jié)論
針對(duì)上述方法,在嵌入式Linux系統(tǒng)平臺(tái)項(xiàng)目中得以應(yīng)用,實(shí)現(xiàn)了以數(shù)據(jù)為中心,快速、高效、正確傳輸數(shù)據(jù)的目的。
文中提出了基于數(shù)據(jù)實(shí)體的DDS數(shù)據(jù)分發(fā)服務(wù),該方法提升了系統(tǒng)中的有效匹配數(shù)量,減小無(wú)用信息的交互,提高了發(fā)布者和訂閱者之間的匹配效率,同時(shí)又實(shí)現(xiàn)了對(duì)發(fā)布端和訂閱端數(shù)據(jù)完整性的校驗(yàn),確保了發(fā)送和接收數(shù)據(jù)的正確性、完整性和一致性。
參考文獻(xiàn)
[1]OMG,Data Distribution Service for Real-time System Specification 1.0[S],2004.
[2]OMG,Data Distribution Service for Real-time System Specification 1.1[S],2005.
[3]OMG,Data Distribution Service for Real-time System Specification 1.2[S],2007.
[ 4 ] O M G . C O R B A n o t i f i c a t i o n s e r v i c e specificationversion[EB]. 2002.10.1.
[5]謝蓓,劉毅,曹萬(wàn)華,等.實(shí)時(shí)系統(tǒng)數(shù)據(jù)分布服務(wù)DDS技術(shù)綜述[J].艦船電子工程,2006,26(2):16-19,122.
[6]羅亞軍.數(shù)據(jù)分發(fā)服務(wù)DDS技術(shù)研究[J].電子編程技巧與維護(hù),2013(8):62-63,66.
[7]G. Muhl. Generic constrains of content-based publish/subscribe system[C]. In Proceedings of the 6th International Conference on Cooperative Information Systems(CoopIS), pages 211-225. Springer,2001.
[8]薛濤,馮博琴.內(nèi)容發(fā)布/訂閱系統(tǒng)路由算法和自配置策略研究[J].軟件學(xué)報(bào),2005,16(2):251-259.
[9]GeroMuhl, LudgerFiege, and Alejandro P. Buchmann. Filter Similarities in Content-Based Publish/Subscribe Systems. In Proceedings of the International Conference on Architecture of Computing Systems(ARCS02), volume 2299 of LNCS[C]. BERLIN, GERMANY: Springer Verlag, 2002.
[10]薛濤,馮博琴.使用Gossip算法實(shí)現(xiàn)可靠的基于內(nèi)容的發(fā)布訂閱系統(tǒng)[J].小型衛(wèi)星計(jì)算機(jī)系統(tǒng),2006,27(1):185-189.
[11]MichiHenning,SteveVinoski.基于C++ CORBA高級(jí)編程[M].徐金梧,等,譯.北京:清華出版社,2000.