Data Distribution Service

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Data Distribution Service for Real-time Systems(DDS)は、CORBAに欠けていたデータ中心の出版-購読型仕様を求める声に応じて作成された分散システム出版-購読型ミドルウェアの仕様である。それまでもいくつかの独自なDDSソリューションはあったが、2004年に主要DDSベンダー2社(Real-Time InnovationsThales)が共同でDDSの標準仕様を策定し、Object Management Group(OMG)がこれを承認したものである。 なお、通信プロトコルとしてはRTPSプロトコル(2008年末時点ではRev 2.1)を使用することが規定されている。

バージョン履歴[編集]

  • DDS 1.2 — 最新バージョン。リンク先はOMG会員のみアクセス可能 OMG非会員はThe OMG DDS portal[1]より入手可能
  • DDS 1.12005年12月4日
  • DDS 1.0

DDS仕様では2種類のインターフェイスを規定している:

  • 低レベルのDCPS(Data-Centric Publish-Subscribe)は、適切な受領者への適切な情報の効率的な配信を目的としたものである。
  • オプションの高レベルなDLRL(Data Local Reconstruction Layer)は、DDSをアプリケーション層に簡単に統合するためのインターフェイスである。これは元々CORBAベースアプリケーションの移植性を上げるために提唱された仕様であるが、現実にはCCM(CORBA Compatibility Model)経由でDDS APIを使用する応用例が多いため、提唱ベンダー以外の製品では対応していない。

アーキテクチャ[編集]

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 は以下にあるようなベンダーから実装された製品が出ており、CC++JavaAPIが利用可能である。

DDSプロバイダー実装[編集]

採用事例[編集]

代表的なものとして、米海軍オープンアーキテクチャ(Naval Open Architecture: 略称OA)に採用され、その後OA毎米国防総省全体の調達規格に組み込まれた。この影響で旧西側同盟諸国を始めとする各国で軍用・民生用を問わずに採用されている。

関連項目[編集]

外部リンク[編集]