0

各ノードが (トピックごとに) データを同時にパブリッシュおよびサブスクライブできるパブリッシャー/サブスクライバー分散アプリケーションを作成したいと考えています。簡単にするために、パブリッシャー/サブスクライバーが最初にパブリッシュ/サブスクライブしたいものを中央サーバーに報告するフェーズがあると仮定します。これが完了すると、サーバーはサブスクライバーに、パブリケーションを受信するために接続する必要がある情報を (トピックごとに) 送信します。ノードはパブリッシュおよびサブスクライブできるため、ノード A は別のノード B に接続してサブスクライブできます。ノード B もノード A に接続できます。これは、ノード A がパブリッシュするデータをサブスクライブする必要があるためです。それは循環的な「依存」です。

私が今抱えている問題は、ソケットはすでに双方向の構造であるため、データの発行とデータの受信の両方で、これらの 2 つのノードの通信用にソケットを 1 つだけ保持したいということです。両方のノードに、ポートをリッスンするソケット リスナーがあるとします。両方のノードが同時に相互に接続します。どの接続が受け入れられ、どの接続が破棄されますか? この問題に適したプロトコルはどれですか?

ありがとう!

4

3 に答える 3

0

このプロセスは、このオープンソースネットワークライブラリで使用されるハンドシェイク手順に似ています。A->BまたはB->Aのいずれかで接続が確立されると、既存の単一の接続がすべての通信に使用されます。最善の策は、「はじめに」セクションまたはクライアントサーバーアプリケーションの作成方法に関する記事を確認して、実際の動作を確認することです。

于 2013-01-30T00:55:42.173 に答える
0

問題に適切に対応するのは、DDS (データ配布サービス) の実装です。具体的なエンドポイントの概念を完全に取り除き、トピック/データのみに焦点を当てます。どのノードも、トピック/データのプロデューサーとコンシューマーの両方として機能できます。DDS ミドルウェアは、すべてのアドレス指定、状態の伝播、シリアライズ/デシリアライズ、フロー制御などを処理します。また、新しいトピックとデータの (自動) 検出も処理します。

DDS の仕組みを説明する短いビデオを次に示します。

以下は、さまざまな DDS 実装(商用および無料) のリストです。

于 2013-02-04T17:30:28.543 に答える
0

ソケットは双方向の場合がありますが、同時に 2 つのエンドポイントに接続することはできません。必要なもの:

  • 中央サーバーへのアクティブな (クライアント) 接続
  • もう1つは、中央サーバーが接続するように指示するものに接続します
  • 着信接続を受け入れることができるように、リスニング (サーバー) ソケット
  • インバウンド接続ごとに受け入れられたソケット。
于 2013-01-30T00:01:18.987 に答える