OpenDDS之DDS學習筆記

    DDS:data distribution service數據分發服務

    DDS信息發佈中間件是一種輕便的、能夠提供實時信息傳送的中間件技術。DDS中間件是一個軟件層,從操作系統、網絡傳輸和底層數據格式的細節中抽象出應用。相同的概念和api提供給不同的編成語言,使得應用在不同的操作系統、編成語言和處理體系架構之間交換信息。底層細節包括數據傳輸格式、發現、連接、可靠性和、協議、Qos策略等由中間件來管理。

    DDS採用發佈/訂閱體系架構,以數據爲中心,提供豐富的Qos服務質量策略。

    以數據爲中心的核心是DDS知曉整個集成網絡內的數據以及控制數據的共享。使用傳統的以消息爲中心的中間件,必須考慮發送消息的問題。而使用以數據爲中心的中間件,只要考慮如何共享數據,何時共享數據的問題,就可以之間共享數據值。DDS直接爲用戶實現受控的、受管的、安全數據共享,而不是在應用代碼中管理所有的負責邏輯。在衆多的通信中間中,DDS是唯一一個以數據爲中心的標準,適用於物聯網。

    DDS提供基於Qos控制的共享數據。應有通過發佈和訂閱主題來實現,主題用他們的主題名來標識。訂閱方可以規定時間和內容過濾器,這樣可以獲得該主題發佈數據的一個子集。不同的DDS域是完全不重疊的。在DDS域之間沒有共享。

   DDS的全局數據空間

       DDS把所有的本地存儲的數據稱作全局數據空間。對於應用來說,全局數據空間看上去像通過api來訪問內存一樣。你使用時,就像使用本地存儲一樣。事實上,DDS發送消息來更新遠端節點的相應存儲值。這樣,在使用時,如同本地存儲。

        總而言之,DDS使應用在需要進行數據訪問的時候提供一個虛擬的全局數據池概念,事實上並沒有一個存儲所有數據的全局設備。每個應用僅在本地存儲它需要的數據,當整個網絡內的任何應用需要他們時,提供給對應應用。所有的數據分發工作全部都由DDS代勞了。全局數據空間是一個虛擬概念,實際上是本地存儲的集合。每個應用,可以用幾乎任何一種語言編寫,運行在任何系統上,可以在本地內存上讀到最好的數據格式顯示的數據。全局數據空間可以在嵌入式系統、移動和雲應用之間共享數據,採用任意的傳輸方式,無論語言和系統,而且延遲極低。

DDS發佈/訂閱模型

        DDS以數據爲中心的發佈-訂閱模型爲所有的分佈式節點之間創建了一個虛擬共享的全局數據空間。在該模型下分佈式節點在網絡

上以發佈或訂閱的方式傳輸數據,節點可以是發佈者或者訂閱者,或兩者都是。網絡中的數據對象用主題做標識,分佈式節點在全局數據空間中發佈或訂閱感興趣的主題信息。各個節點在邏輯上無主從關係,點與點之間都是對等關係,通信方式可以是點對點,點對多,多對多,在Qos策略的控制下建立連接,自動發現和配置網絡參數。

        DDS規範有兩層:分別是DLRL層(數據本地重構)和DCPS層(以數據爲中心發佈訂閱)。DCPS層是DDS的核心和基礎,提供了通信的基本服務;DLRL層將DCPS層提供的服務進行了抽象,在DLRL層建立了與底層服務的映射關係。

 

DDS基本結構是域domain,由域號唯一標識。domain將各個應用程序綁定在一起進行通信,只有在同一個域內的通信實體才能通信,不同域內的實體間無任何邏輯關係。

        DDS內所有的成員都是entity,DDS中任兩個entity通信都必須在同一個domain內進行交互。domain內的domainparticipant是服務的入口點,任何DDS應用都需首先獲取domain participant,然後通過domain participant獲取其他服務,如publisher,subscriber,topic等。

        domain Participant作爲數據分發服務的入口點,包含若干發佈者,訂閱者和註冊主題,負責創建,刪除和管理這些實體。

        publisher作爲發佈者角色,至少包含一個DataWriter,並負責創建,刪除和管理datawriter。同樣,subcri作爲訂閱者,至少與一個datareader關聯,並負責發佈數據,數據發佈者通過調用datawriter的write函數發佈數據,但數據不會立刻被送出,實際的消息產生是通過publisher和Qos綜合控制的。datareader負責訂閱數據,訂閱方式可採用異步方式(listener),同步方式和非阻塞三種。

        topic是datawriter和datareader相互通信時約定的主題,每個datawriter/datareader必須與一個主題綁定,相互通信的datawriter和datareader之間的主題數據類型必須相同,Qos必須匹配。另外,topic必須有確定的數據類型。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章