鄒 歌,劉云飛
(1.香港城市大學,香港 999077;2.江蘇自動化研究所,江蘇 連云港 222006)
實時數據分發服務的自動發現技術
鄒 歌1,劉云飛2
(1.香港城市大學,香港 999077;2.江蘇自動化研究所,江蘇 連云港 222006)
DDS是OMG專門針對實時分布式系統頒布的數據分發國際規范,其核心在于提出了“全局數據空間”的思想,從而實現了系統松耦合、強實時、高可靠和高吞吐量等特性。介紹了DDS基本通信模型,總結歸納了核心實體角色間的邏輯關系,分析了“全局數據空間”概念模型,重點研究了構建該模型的關鍵技術——實體遠程自動發現技術,包括域參與者層和發布-訂閱端點層的雙層自動發現機制,以及實體自動發現的協議過程、控制邏輯和加入/退出的更新機制。利用該技術可以設計和開發系統監控軟件,實時監聽和分析系統發布和訂閱狀態信息,記錄歷史數據,提供完整且直觀的系統通信拓撲結構,使開發者更好的理解分布式系統、校正系統設計、調配性能參數、優化系統集成和擴展。
數據分發服務;發布-訂閱;自動發現;全局數據空間
實時數據分發系統是指采用數據分發服務(Data Distribution Service,DDS)消息總線技術的實時分布式系統[1]。數據分發服務是國際對象管理組織(OMG)為了解決“在正確的時間、正確的位置獲取正確的數據”的需求而制定的國際規范。該規范標準化了分布式實時系統中數據發布、傳遞和接收的接口和行為,定義了以數據為中心的發布-訂閱(Data-Centric Publish-Subscribe)機制,支持豐富的服務質量控制策略QoS,具有強實時、高性能、高可靠和松耦合等特點。它主要應用在要求高性能、可預見性和對資源有效使用的關鍵任務領域[2],如艦船控制、武器控制、工業控制和實時金融交易系統等。
DDS規范最突出的特點在于其提出并定義的以數據為中心的發布-訂閱模型,并列舉和正式定義了一整套完整的服務質量控制策略QoS[3]。
1.1 發布-訂閱模型
以數據為中心的發布-訂閱模型為所有分布式節點之間建立了一個虛擬共享的“全局數據空間(Global Data Space,GDS)”[4]。在該模型下,數據發布者只需用一個簡單的主題(Topic)向“全局數據空間”聲明自己要發布的數據,并通過配置QoS說明自身提供的服務質量級別,然后就可以向該空間發布數據;同樣,數據訂閱者也只需用一個主題向該空間聲明自己感興趣的數據,并配置QoS策略說明自己需要的服務質量級別,便可從該空間訂閱數據。發布者和訂閱者之間都不需要關心對方是誰、有沒有在線、網絡IP或者端口信息等信息,全局數據空間模型如圖1所示。

圖1 全局數據空間模型
圖中的2個發布者Pub-A、Pub-B分別向GDS發布主題為A、B的數據,4個訂閱者Sub-A、Sub-B1、Sub-B2、Sub-C分別從GDS訂閱主題A、B、B、C,由于Pub-A和Sub-A主題相同,兩者之間根據匹配規則建立發布-訂閱關系,數據自動由Pub-A推送到Sub-A,同樣Pub-B與Sub-B1、Sub-B2也實現了主題B的發布和訂閱。由于GDS中還沒有主題C的發布者,Sub-C暫時訂閱不到任何數據。
分布式節點上的應用程序只需要調用DDS標準API即可完成數據的發布和訂閱,DDS中間件“自動發現”遠程通信節點,并根據主題數據類型(TopicType)、主題名稱(TopicName)相同且QoS策略匹配的規則自動建立發布-訂閱關系,發布者和訂閱者兩者之間就像建立了虛擬連接,訂閱者可以直接從發布者訂閱數據。DDS完全自動地將數據從發布者傳送到數據訂閱者,這些對上層開發者或者App是完全透明的。
該模型主要有如下優點:
(1)系統中所有分布式通信節點間都是對等關系,由于不存在中心節點,也就不存在服務器瓶頸和單點失效問題,某個通信節點的崩潰或癱瘓不會影響其他節點,因此系統可靠性明顯增強。
(2)實際數據的傳輸是直接由發布者“推”向訂閱者,中間不經過任何服務節點,也無需發送“請求”信息,因此系統具有很強的實時性和高效性。
(3)沒有傳統Socket客戶端/服務器的IP或端口號概念,還沒有服務器必須先啟動、雙方必須同時在線的緊耦合苛刻約束,數據發布者和訂閱者可以隨時隨地加入或退出“全局數據空間”,在時間和空間兩個方面保證了系統的松耦合性,大大提高了系統的靈活性和擴展性。
1.2 服務質量控制策略QoS
DDS規范正式定義了一整套完整的服務質量控制策略QoS。通過配置合適的QoS,應用程序能在通信效率、通信質量和系統資源占有率三者間找到最優或極優的平衡點,不僅能滿足系統對復雜多變數據流的需求,還可以很好地配置和利用系統資源,提高通信效率。服務質量控制策略QoS將資源的可用情況、提供方對資源的占有程度及請求方對資源的期待程度分別程序化為主題QoS、發布者QoS和訂閱者QoS,QoS參數虛擬了底層的整個通信機制[5-6]。
發布-訂閱通信模型將系統劃分為邏輯獨立的若干域(Domain),每個域內包含若干實體角色(Entity),由這些實體角色完成數據的發布、訂閱及其他交互任務,其核心的實體角色包括:域參與者(DomainParticipant)、發布者(Publisher)、訂閱者(Subscriber)、主題(Topic)、數據作者(DataWriter)和數據讀者(DataReader)。這些實體角色都有與其對應的若干服務質量控制策略QoS,每對連接的發布端點和訂閱端點之間也可以建立獨立的QoS協定。下面簡要地說明發布-訂閱模型以及各實體間的邏輯關系,如圖2所示[7-8]。
(1)Domain是一個范圍概念,由域號(DomainID)唯一標示,只有在同一個域內的通信實體才能通信,不同域內的實體間無任何邏輯關系,因此域構建了一個虛擬通信網絡,將同一物理網絡上的不同應用系統從邏輯上相互隔離。
(2)DomainParticipant作為數據分發服務的入口點,包含若干發布者、訂閱者和注冊主題,負責創建、刪除和管理這些實體。
(3)Publisher作為發布者角色,至少包含一個DataWriter,并負責創建、刪除和管理DataWriter。同樣,Subscriber作為訂閱角色,至少與一個DataReader關聯,并負責創建、刪除和管理DataReader。
(4)DataWriter具體負責發布數據,數據發布者通過調用DataWriter的write()函數發布數據,但數據不會立刻被送出,實際的消息產生是通過Publisher和QoS綜合控制的[7]。
(5)DataReader負責訂閱數據,訂閱方式可采用異步方式(Listener)、同步方式(WaitSet)和非阻塞三種。對于DataWriter與DataReader共有的QoS策略,DataWriter提供的服務質量級別都應該等于或者超過DataReader請求的服務質量級別,只有兩者QoS兼容時才建立通信過程,否則QoS匹配失敗。

圖2 DDS各要素組成模型
(6)Topic是DataWriter和DataReader相互通信時約定的主題,每個DataWriter/DataReader必須與一個主題綁定,相互通信的DataWriter與DataReader之間的主題數據類型必須相同、QoS必須匹配。另外,Topic必須有確定的數據類型,數據類型通過基本類型char、byte、int等進行定義。
(7)Sample:即更新數據,是DataWriter和DataReader之間傳送的數據,也是Topic的一個具體值。
另外,所有DDS實體都有與其對應的監聽類(Listener),用以監聽其狀態的改變,比如當DataReader有新數據到達或QoS改變等狀態變化時,會觸發與其關聯的Listener類的回調函數,即時通知應用程序,應用程序再讀取數據或采取其他動作處理該事件[3,6]。由以上分析可以看出,DomainParticipant與DataReader、DataWriter之間具有明顯的層次和所屬關系。一個DomainParticipant可包含若干DataReader和Data Writer。
實際上,表面展現的智能化越高,底層實現的機制就越復雜。DDS中間件自動地將數據從發布者推送到訂閱者這一“智能”過程需要復雜的內部數據結構、高效的發布-訂閱關系匹配算法和自動發現技術做支撐,其關鍵技術就是數據分發服務的遠程自動發現技術。“全局數據空間”模型的關鍵點在于,每個分布式節點的數據空間內并沒有存放該空間內的全部數據,而只存放了其感興趣的一部分數據,DDS通過雙層自動發現技術建立了一個虛擬“全局數據空間”[9-10]。
所謂實體自動發現是指不同分布式節點上相互通信的DDS內部實體角色DomainParticipant、DataWriter、DataReader之間能夠自動地相互發現對方、自動建立發布訂閱關系,進而自動完成數據由發布者到訂閱者的過程,這些后臺處理對上層DDS應用(App)開發者是完全透明的。自動發現技術在后臺為每個域參與者構建了一個全局的發布-訂閱關系拓撲圖,域參與者能夠與遠程通信的其他域參與者構建虛擬連接,準確地將上層傳遞的相關主題數據由發布者“推送”到訂閱者[11]。
基于以上分析的DDS內部核心實體角色的功能定位和邏輯關系,將自動發現技術劃分為兩個邏輯層:域參與者層和發布-訂閱端點層。域參與者層主要完成本地域內參與者與遠程參與者之間的自動發現,為每個域參與者構建可能與其具有通信關系的其他遠程域參與者的拓撲結構;發布-訂閱端點層是在前一層已經構建的參與者之間通信拓撲關系的基礎上,具體構建發布端點和遠程訂閱端點之間的發布-訂閱關系,建立分布式節點之間的虛擬連接。這兩層之間具有嚴格的先后順序關系,只有第一層的域參與者自動發現完成后,才能進入第二層發布-訂閱端點自動發現。
3.1 域參與者自動發現
域參與者層自動發現技術主要是通過各個分布式節點內部的DDS交換域參與者描述信息(participantDATA),并實時動態維護該信息組成的數據庫來實現[3,12]。participantDATA內部包含了參與者的全局唯一標識符(GUID)、網絡地址IP、采取的QoS策略等信息,其傳輸通過DDS內置的專門訂閱和發布此主題數據的p-DataReader和p-DataWriter完成。這兩個實體與普通DataReader和DataWriter的主要區別在于,其對用戶是隱身的,完全由DDS內部來管理。以A和B兩個分布式節點為例(NodeA和NodeB),具體說明其中的協議過程和控制原理,如圖3所示[11]。
(1)NodeA內部DDS創建域參與者時,以best-effort方式通過p-DataWriter向外廣播發布participant-A-DATA數據,發布過程以周期(periodtime)形式進行,并且在第一個周期內,隨機發送N次重復數據包,periodtime和N通過QoS策略預先配置。

圖3 域參與者層自動發現協議控制過程
(2)當NodeB內部DDS創建域參與者時,與步驟(1)過程相同,也以廣播方式向其他域參與者發布participant-B-DATA數據。
(3)當NodeA節點p-DataReader收到該participant-B-DATA主題數據后,將根據預先配置的QoS策略判斷是否需要響應,若不需要與NodeB通信,就忽略該信息;若需要,則將該participant-B-DATA數據添加到本地信息庫,并在預先配置的響應時間內向NodeB發送其已經創建的參與者信息participant-A-DATA。
(4)與過程(3)原理相同,NodeB收到participant-A-DATA后,將此域參與者信息記錄到本地信息庫。
至此,NodeA與NodeB交換了彼此的DDS參與者信息,并記錄在本地信息庫中,參與者自動發現過程結束。圖中①和②分別表示NodeA和NodeB的服務質量控制策略QoS配置的隨機發送的合理時間。
DDS在三種事件觸發下,需要發送participantDATA通知其他DDS節點,分別是:(a)創建域參與者;(b)刪除域參與者;(c)該域參與者的服務質量控制策略QoS改變時。(b)與(c)的過程與上面說明(a)的協議過程相同。在遠程DDS收到participantDATA后,應實時更新本地信息庫,以保證發布-訂閱關系的實時更新。這個信息庫就跟路由表一樣,準確描述了參與者之間的通信關系,從而建立了域參與者的系統通信拓撲關系圖。
3.2 發布-訂閱端點自動發現
發布-訂閱端點層的自動發現技術目的在于,通過構建系統發布-訂閱關系,從而構建“全局數據空間”的虛擬連接。該部分通過DDS域參與者之間自動交換其所屬的發布端點描述信息(publicationDATA)和訂閱端點描述信息(subscribeDATA)來實現。publicationDATA和subscribeDATA的交換通過DDS中間件內置的兩對數據作者和數據讀者發布和訂閱完成,分別是pb-DataReader、pb-DataWriter和sb-DataReader、sb-DataWriter。域參與者層自動發現結束后,會觸發域參與者之間的匹配事件,即將域參與者與遠程域參與者之間的pb-DataReader/sb-DataReader和pb-DataWriter/sb-DataWriter分別進行匹配,匹配成功以后,通過reliable方式進行發布和訂閱。
在創建DataReader/DataWriter時,域參與者基于已構建的域參與者通信關系信息庫,向與其通信的其他域參與者廣播新創建的Reader/Writer的描述信息publicationDATA和subscribeDATA,以聲明該域參與者創建了新的發布或訂閱端點,其他遠程域參與者收到后,將這些信息與本地訂閱端點或發布端點匹配,若成功,則建立新的發布-訂閱關系,并將這些信息添加到本地發布端點和訂閱端點信息庫。另外,當域參與者所屬的DataReader/DataWriter的QoS策略發生變化或被刪除時,也會觸發publicationDATA/subscribeDATA的發布事件。這些內部實體的發布-訂閱過程也對上層用戶完全透明,使DDS系統開發者將精力更多地放在業務邏輯處理方面。以NodeA內部創建數據作者DataWriter C為例具體說明協議過程和控制原理,如圖4所示。

圖4 發布-訂閱端點層自動發現協議控制過程
(1)NodeA的域參與者創建數據作者DataWriter C時,本地的pb-DataWriter會向NodeB發布該DataWriter C的端點描述信息publication C DATA,并向NodeB發送HB(F=0),請求NodeB發回確認ACKNACK。
(2)NodeB訂閱到publication C DATA后,將其與本地的DataReader相匹配,若匹配成功,則建立發布-訂閱關系,并更新本地發布-訂閱端點信息庫,否則,忽略該信息,最后向NodeA返回確認ACKNACK,表明已收到該信息。
當DataWriter C的QoS策略改變和被刪除時的過程與創建的協議過程和控制原理相同。圖中①和②分別表示NodeA的pb-DataWriter和NodeB的pb-DataReader服務質量控制策略QoS配置的隨機發送的最小確認時間和合理確認時間[8,13]。
基于雙層自動發現技術開發DDS系統監聽分析軟件,可以直觀顯示系統發布-訂閱狀態和通信拓撲關系,并實時監聽關鍵實體角色的QoS變化,幫助DDS開發者調試和快速定位系統問題。在DomainID為0的域內創建2個主題,分別為Square、Circle,針對Square主題創建DataReader和DataWriter,Circle主題僅創建DataWriter。由圖5的測試結果表明,DDS監聽分析軟件能夠正確監聽系統內的發布和訂閱匹配狀態,直觀顯示系統的發布-訂閱關系拓撲結構。

圖5 發布-訂閱關系匹配結果
數據分發服務適用于大規模分布式系統,以解決大量周期數據的實時通信問題[10,14],在未來大數據時
代將有更廣闊的應用空間。利用文中介紹的自動發現技術設計和開發系統監控軟件,實時監聽和分析系統發布和訂閱狀態信息,記錄所有歷史數據,提供完整且直觀的系統通信拓撲結構,使開發者更好地理解分布式系統、調配性能參數、優化系統集成和擴展。
[1] 楊傳順,王學萬.實時數據分發系統的服務質量控制的研究[J].計算機技術與發展,2011,21(5):231-234.
[2] 張大海,賴蘭劍,陳鼎才.DDS在分布式系統仿真中的應用[J].計算機技術與發展,2011,21(3):250-252.
[3] Connext DDS core libraries users manual version 5.2.0[M].[s.l.]:RTI,2015.
[4] 李 軍.數據分發服務中的全局數據空間(GDS)的研究與設計[J].艦船電子工程,2010,30(4):62-64.
[5] 王 珩,聶 敏,黃四牛,等.一種基于DDS的戰術信息柵格信息分發方法[J].現代防御技術,2011,39(2):89-94.
[6] Data Distribution Service (DDS)version 1.4[S].[s.l.]:[s.n.],2015.
[7] 王 斌,林懷清,林海濤.戰場態勢數據分發技術研究[J].艦船電子工程,2011,31(5):9-11.
[8] 任昊利.數據分發服務:以數據為中心的發布/訂閱式通信[M].北京:清華大學出版社,2014:89-102.
[9] 杜濤濤,張慶杰.朱華勇.面向實時數據分發服務的DDS性能研究[J].微計算機信息,2010,26(8-3):155-158.
[10] Data distribution service getting started guide version 4.5c[M].[s.l.]:RTI,2010.
[11] The Real-time Publish-Subscribe Protocol (RTPS) DDS interoperability wire protocol specification version 2.2[S].[s.l.]:[s.n.],2014.
[12] 楊傳順.以數據為中心的艦載分布式系統[J].艦船科學技術,2011,33(7):75-78.
[13] Twin Oaks Computing.What can DDS do for Android[EB/OL].2012.http://www.omg.org/hot-topics/documents/dds/Android_and_DDS1.pdf.
[14] Interface Definition Language (IDL) version 3.5[S].[s.l.]:OMG,2014.
Automatic Discovery Technology of Real-time Data Distribution Service
ZOU Ge1,LIU Yun-fei2
(1.City University of Hong Kong,Hong Kong 999077,China; 2.Jiangsu Automation Research Institute,Lianyungang 222006,China)
DDS,a international specification promulgated by Object-Manage-Group (OMG),focuses on real-time distribution system communication and puts forward the key Global Data Space (GDS) thought,which is decoupling,real-time,high reliability and throughput.The communication model of the DDS is introduced,the logical relationship between the key roles is summed up,and the GDS idea analyzed.Then the Automatic Discovery Technology for remote entities,as the key technology of GDS,is researched,which includes two layer automatic discovery mechanism (participant layer and pub-sub endpoint layer),protocol process of key entities,control logic,and refresh mechanism when joining or leaving.The technology can be used to design and develop system monitoring software,real-time monitoring and analysis of system status information published and subscribed,recording historical data,providing a complete communication topology,which enables developers to better understand the distributed system,calibrate system design,deploy performance parameters and optimize system integration and extension.
data distribution service;publish-subscribe;automatic discovery;global data space
2015-12-06
2016-03-24
時間:2017-01-04
鄒 歌(1993-),女,碩士研究生,研究方向為電子信息系統。
http://www.cnki.net/kcms/detail/61.1450.TP.20170104.1023.032.html
TP311
A
1673-629X(2017)01-0025-05
10.3969/j.issn.1673-629X.2017.01.006