1. 程式人生 > >OpenDDS系列(1) —— OpenDDS 簡介

OpenDDS系列(1) —— OpenDDS 簡介

1. OpenDDS簡要介紹

1.1 簡介

http://www.wteam.it/images/articles/opendds/network-001.png

1.1.1 DDS是什麼

DDS(DataDistributionService)是資料分發服務的首字母縮略詞。

DDS採用釋出/訂閱體系架構,強調以資料為中心,提供豐富的QoS服務質量策略,能保障資料進行實時、高效、靈活地分發,可滿足各種分散式實時通訊應用需求。

根據OMG(物件管理組織,Object Management Group)定義的標準,它本質上是一個通過網路交換資料的協議。廣泛應用於分散式應用,模擬器等。它基於 DCPS(Data-Centric Publish-Subscribe, 以資料為中心的釋出訂閱)模型。

DDS中以資料為中心的釋出/訂閱(DCPS)模型構建了一個共享的”全域性資料空間

“的概念,所有的資料物件都存在於此空間中,分散式節點通過簡單的讀、寫操作便可以訪問這些資料物件。實際上,資料並非存在於所有計算機的地址空間中,它僅存在於那些對它感興趣的應用程式的本地快取中,而這一點正是釋出/訂閱模型的關鍵所在。

DDS規範使用UML語言描述服務,提供了一個與平臺無關的資料模型(這個模型能夠對映到各種具體的平臺和程式語言),使得實時分散式系統中資料能夠高效、可靠地釋出,它主要應用在要求高效能、可預見性和對資源有效使用的關鍵任務領域

DDS規範列舉並正式定義了一整套全面的QoS(Quality of Service,服務質量)策略,能利用QoS進行系統控制。每一個DCPS實體都有自身的QoS策略,而且在每一對釋出者和訂閱者之間又都可以建立獨立的QoS協定。這使得DDS可以很好地配置和利用系統資源,協調可預言性與執行效率間的平衡,並能支援複雜多變的資料流需求。

DDS經常被用於三種設計和應用環境,包括:

  • 資料苛刻性場合的應用
  • 多個數據源需要連線到多個數據接收點的應用程式
  • 系統結構動態需要發生變化的應用程式

目前DDS資料通訊服務已經廣泛應用到了美國海、陸、空、天各個領域,併發揮了重要的作用。而美國海軍正以DDS 技術為核心,建設一個統一的、全新的自動操作的分散式DDS 網路結構,對其海軍裝備的作戰系統進行綜合整合。

OpenDDS体系结构

OpenDDS體系結構

1.1.2 DDS通訊的基本要素

  • 主題(Topic):這是一個包含可在程序之間交換的資料的訊息。資料表示為可以包含不同資料型別的結構,如整數,字串等;
  • 資料編寫器(Data Writer)
    :這是該過程用於傳送資料的元件。程序寫入必須傳送到資料寫入器的資料;
  • 資料讀取器(Data Reader):這是接收資料並使其可用於流程的元件;
  • 釋出者(Publisher):這是控制訊息的網路流的元件,應用即QoS策略(我們將在後面介紹);
  • 訂閱者(Subscriber):這是控制輸入流的元件。

DDS通訊模型

1.1.3 DDS架構的主要優點

  • 以資料為中心,資料吞吐量大,資料傳輸實時性好
  • 採用全域性資料空間技術,大大地提高通訊效率
  • 引入服務質量策略(QoS),增加了通訊靈活性
  • 具有豐富的線上協議,支援真實裝置接入
  • 通訊實時性好,能夠支援低時延模擬

1.1.4 DDS產品種類

  • RTI DDS:由美國 RTI 公司開發,目前全球範圍內超過500個專案的廣泛應用和部署,支援Windows、Linux、VxWorks等多種作業系統,由於是商用軟體,成本相對較高。
  • OpenSplice DDS: 最初由 Thales 開發,在 2006 年被 PT(Prism Technologies)獲得,主要的應用在 Tacticos 專案(Thales 的戰鬥管理系統)。
  • OpenDDS:物件管理組織 OMG 的實時資料分發系統的 C++ 開源實現。 OpenDDS 本身使用 C++ 開發,並通過 JNDI 技術相容 JMS 標準。 OpenDDS 為了實現跨平臺特性而構建於 ACE 抽象層。
  • MilSoftDDS: 土耳其的 MILSOFT Soft-ware Technologies 公司開發的DDS應用軟體。

由於基於 ACE(自適應通訊環境) 通訊框架的中介軟體與OpenDDS 底層的 ACE+TAO 機制可以相容。另外,從商業角度考慮,採用 OpenDDS 這種免費開源的資料分發服務軟體也有利於系統介面和支撐軟體平臺的推廣應用。

1.1.5 OpenDDS

OpenDDS是使用C++語言針對OMG資料分發服務(DDS)的一種開源實現。由OCI公司設計和維護,可從http://www.opendds.org/的OpenDDS社群門戶中獲得幫助,目前最新的版本是OpenDDS 3.12.1

儘管本身OpenDDS採用C++語言實現,但也提供JAVA和JMS的開發介面,這意味著JAVA程式開發也可以使用OpenDDS。

1.2 DDS的應用領域

全球已經有500多個專案和案例成功採用了RTI公司的DDS方案,網路中間的市場佔有率高達80%左右。包括航空、航天、船舶、國防、金融、通訊、汽車等領域。

美國海上戰爭中心(NSWC)高效能分散式計算系統(HiPer-D)

  • 高效能分散式計算(HiPer-D)程式跟蹤成千上萬個目標、多艘船的幾百個計算機之間協同通訊
  • 滿足系統實時性要求(微秒級) 並具有100%時間確定性
  • RTI提供成熟的技術和產品滿足分散式計算環境中HiPer-D對實時性和確定性的嚴格要求

1.3 結論

我們已經介紹了OpenDDS體系結構及其特點。在接下來的文章中,我們將看到如何更詳細地使用OpenDDS,並且會看到一些有趣的應用程式。