4

私は DDS 標準、特に OpenSplice について調べようとしてきましたが、アーキテクチャについて疑問に思っています。

DDS では、ブローカーが実行されている必要がありますか、またはメッセージ交換とさまざまな関係者間の調整を管理する特定のデーモンが必要ですか? トピックのデータを発行する単一のプロセスを起動し、同じトピックをサブスクライブする別のプロセスを起動するだけで十分ですか? 別のプロセスを実行する必要がある理由はありますか?

あるいは、UDP マルチキャストを使用して、パブリッシャーとサブスクライバーの間である種の自動検出を行っていますか?

一般に、これを MQ シリーズや EMS などの従来のキュー アーキテクチャと対比させようとしています。

誰かがこれに光を当てるのを助けることができれば、本当に感謝しています。

ありがとう、

ファヒーム

4

3 に答える 3

5

DDS には中央ブローカーがなく、マルチキャスト ベースの検出プロトコルを使用します。OpenSplice には各ノードのサービスを備えたモデルがありますが、これは実装の詳細です。たとえば RTI DDS を確認すると、それはありません。

于 2011-12-30T21:41:22.227 に答える
3

DDS仕様は、実装に中央デーモンが必要ないように設計されています。しかしもちろん、それは実装の選択です。

RTI DDS、MilSOFT DDS、CoreDX DDSなどの実装には、ピアツーピアでデーモンを必要としない分散型アーキテクチャがあります。(検出はLANネットワークのマルチキャストで行われます)。この設計には、フォールトトレランス、低遅延、優れたスケーラビリティなど、多くの利点があります。また、デーモンを管理する必要がないため、ミドルウェアを非常に簡単に使用できます。パブリッシャーとサブスクライバーを実行するだけで、残りはDDSによって自動的に処理されます。

OpenSplice DDSは、以前は各ノードでデーモンサービスを実行する必要がありましたが、v6に新機能が追加されたため、デーモンは不要になりました。(それらはまだデーモンオプションをサポートしています)。

OpenDDSもピアツーピアですが、私が知る限り、検出のために中央デーモンを実行する必要があります。

于 2012-02-15T21:25:04.417 に答える
3

「集中型ブローカー」アーキテクチャ (ブローカーが単一障害点になる可能性がある場所) と、重要性などの DDS-QoS に基づいてトラフィック フローを管理する各マシン上のサービス/デーモンを区別することは本当に良いことだと思います。 (DDS:transport-priority) と緊急性 (DDS: latency-budget)。

ほとんどの人が、(タイムスライス、優先度クラスなどに基づいて) 重要な/共有リソースとして CPU を管理する(リアルタイムの)プロセス スケジューラがマシン上に絶対に必要であると考えていることに気付くのは興味深いことです。 (アプリケーションコードの処理ではなく)情報を配布することがすべてであるDDSに来ると、ネットワークを管理する「ネットワークスケジューラ」が(少なくとも)「便利」になるのは「奇妙」であることがよくあります(-インターフェイス) を共有リソースとして使用し、トラフィックをスケジュールします (QoS ポリシー駆動の「パッキング」と複数のトラフィック シェーピング プライオリティ レーンの利用に基づく)。

そして、これはまさに、単一マシン上で実行される複数のアプリケーションが共有メモリ セグメントを使用してデータを共有でき、各物理ネットワークにネットワーク サービス (デーモン) が存在する (オプションの) フェデレーション アーキテクチャ モードを利用する場合に、OpenSplice が行うことです。 -緊急性と重要性に関する実際の QoS ポリシーに基づいて、インバウンド トラフィックとアウトバウンド トラフィックをスケジュールするインターフェイス。このようなサービスがすべてのノード情報に「アクセス」できるという事実は、さまざまなアプリケーションからのさまざまなトピックからのさまざまなサンプルを (潜在的に大きな) UDP フレームに結合することを容易にし、おそらくこの「パッキング」のために利用可能なレイテンシ バジェットの一部を活用することさえできます。したがって、効率 (スループット) と決定論 (レイテンシ/ジッタ) の間で適切なバランスを取ることができます。「プライベート」Rx/Tx スレッドと DIFSERV 設定を使用した優先レーン。

そのため、ノードごとにネットワーク スケジューリング デーモンを使用することには、確かにいくつかの利点があります (また、システム全体の再送信を引き起こす「過剰な生産性」、つまりシステムを爆破する「過小反応」のいずれかである可能性のある障害のあるアプリケーションからネットワークを分離するため)。 .. 「ネットワーク スケジューリング デーモン」は「単一障害点」と見なされる可能性があるという事実について議論するときに忘れられることが多い側面ですが、「他のビュー」は仲裁なしの可能性があります。ワイヤと直接対話する「スタンドアロン」アプリケーションは、何らかの理由で上記のように誤動作を開始すると、潜在的なシステム スレッドと見なされる可能性があります。

とにかく .. 常に物議を醸す議論です。そのため、OpenSplice DDS (v6 以降) は、フェデレーションと非フェデレーション (「スタンドアロン」または「単一プロセス」とも呼ばれます) の両方の展開モードをサポートしています。

これが多少役立つことを願っています。

于 2013-07-23T11:41:29.427 に答える