Data Distribution Service
Data Distribution Service for Real-time Systems(DDS)は、CORBAに欠けていたデータ中心の出版-購読型仕様を求める声に応じて作成された分散システムの出版-購読型ミドルウェアの仕様である。それまでもいくつかの独自なDDSソリューションはあったが、2004年に主要DDSベンダー2社(Real-Time InnovationsとThales)が共同でDDSの標準仕様を策定し、Object Management Group(OMG)がこれを承認したものである。
バージョン履歴
- DDS 1.2 — 最新バージョン。リンク先はOMG会員のみアクセス可能 OMG非会員はThe OMG DDS portal[1]より入手可能
- DDS 1.1 (2005年12月4日)
- DDS 1.0
DDS仕様では2種類のインターフェイスを規定している:
- 低レベルのDCPS(Data-Centric Publish-Subscribe)は、適切な受領者への適切な情報の効率的な配信を目的としたものである。
- オプションの高レベルなDLRL(Data Local Reconstruction Layer)は、DDSをアプリケーション層に簡単に統合するためのインターフェイスである。
アーキテクチャ
DDS構成要素
- DDS Publisher
- データ配信を行うDDSオブジェクト。publisher は様々なデータを出版(publish)する。
- DDS DataWriter
- アプリケーションが publisher と通信する際に使用するDDSオブジェクト。特定の型のデータオブジェクトを表す。
- DDS Subscriber
- 出版されたデータを受信し、アプリケーションが利用できるようにするDDSオブジェクト。subscriber は様々なデータを受信してディスパッチする。
- DDS DataReader
- subscriber に付属するDDSオブジェクトで、受信データにアプリケーションがアクセスできるようにする。
DDSモデル
DDS は複雑なコンピュータネットワークに関連したプログラミングを単純化するネットワーキングミドルウェアである。ノード間のデータ/イベント/コマンドの送受信を出版-購読型モデルで実装している。情報を生み出すノード(publisher)は「トピック; topics」を生成し、「サンプル; samples」を出版する。DDS はそのトピックに興味があると宣言した全購読者(subscriber)がサンプルを受け取れるように働く。
DDS は転送に関わる雑事を全て引き受ける。メッセージのアドレッシング、データのマーシャリング(従って subscriber と publisher は異なるプラットフォームでもよい)、配布、フロー制御、再送などである。各ノードは publisher にも subscriber にもなれるし、同時に両方の役目を果たすこともできる。
DDS の出版-購読型モデルでは分散アプリケーションで複雑なネットワークプログラミングをしなくてもよい。
DDS は基本的な出版-購読型モデル以上の機構をサポートする。特に重要な利点は、DDSを通信に利用するアプリケーション群は完全に切り離されているという点である。アプリケーション間の相互作用について設計時に時間をかける必要はない。特に、あるアプリケーションが別のアプリケーションの情報を必要とすることはなく、場所も存在するか否かさえも知る必要がないのである。DDS は以下のようなメッセージ配信のあらゆる面を自動制御し、ユーザーアプリケーションがそれに関わる必要は全くない。
- メッセージを受信すべき相手の決定
- 受信側がどこにあるか
- メッセージを配信できないときに発生する事象
このため、DDSに対してユーザーアプリケーションがQuality of Service(QoS)パラメータを指定でき、自動検出機構の設定をしたり、メッセージ送受信時の動作を指定したりできる。このような機構は最初に設定されたらユーザー側が後で何かをする必要は無い。完全に匿名でのメッセージ交換を行うことで DDS は分散アプリケーションの設計を大幅に単純化し、モジュール化され良く構造化されたプログラム作成を可能としている。
DDS は publisher の二重化によるホットスワップも制御する。ホットスワップ中も subscriber は常に有効な高優先度データのサンプルを受け取る(有効とは、publisherの指定した有効期限内であるという意味)。障害から回復した一次 publisher への復旧も自動的に行われる。DDS は以下にあるようなベンダーから実装された製品が出ており、C、C++、JavaのAPIが利用可能である。
DDSプロバイダー実装
- RTI Data Distribution Service — Real-Time Innovations, Inc. のCOTS リアルタイム DDS API(C言語、C++、Java言語)。組み込みシステムを含む各種プラットフォーム用。
- OpenSplice DDS — PrismTech および Thales のCOTS DDS 実装。
- DDS for TAO — Object Computing, Inc (OCI) のオープンソース DDS 実装。CORBA上に構築されたACE/TAOフレームワークに基づいている。
- Open-Source Java-based DDS — ADELE Team のオープンソース Javaベース DDS 実装(CORBA上に構築)。
- MilSOFT DDS — MilSOFT の COTS DDS 実装。
外部リンク
- The OMG DDS portal
- Data Distribution Service for Real-time Systems, v1.1
- DDS resources — DDSに関する一般情報、デモアプリケーション、技術文書など
- Data Distribution Service DDS links and resources
- Data-Centric Architecture for Mission Critical Systems
- CORBA and DDS, competing or complementary technologies?