1

ノードのネットワークがあります。ノードは相互にメッセージを送信できる必要があります。メッセージはノードからノードにのみ送信されます(つまり、ブロードキャストは送信されません)。ノードは、メッセージを送信する必要のあるノードのアドレスを知っています。ノードは、誰から受信するかを必ずしも知っているわけではありません。一部のノード(メインノードと呼ばれる)は、非常に多数のノード(> 100k)との間でメッセージを送受信する場合があります。

あるノードから別のノードに永続的なメッセージを送信できるようにしたい。信頼性の低いネットワークでも非同期でこれを実行したいと思います。つまり、メッセージサービスに再送や確認応答などを処理してもらいたいのです。

http://activemq.apache.org/networks-of-brokers.htmlで説明されているように、ブローカーの静的ネットワーク(私の小さなセットアップでは2ノードのみ)でActiveMQを使用してみました。これは私のセットアップでは問題なく機能しますが、1つの単一ノード(メインと呼ばれる)に約100kのノードが関連付けられ、関連付けられたすべてのノードにメッセージを転送できるようにするには、100kのブローカーを実行する必要があります。すべてのノードが散発的に送信する可能性があり、メインノードが他のノードのいくつか(> 10k)に送信する必要がある場合があります(注:すべて異なるメッセージを受信するため、ブロードキャストは行われません)。

私が使用して想像した1つのセットアップは、この写真http://i154.photobucket.com/albums/s260/sheep_p/communication.pngで見ることができます。ここで、シリンダーはキューを示します。ここでは、すべてのノードにインバウンドキューとアウトバウンドキューがあります。

これを実現するためにどのテクノロジーを使用でき、このテクノロジーのどのような構成が必要ですか?

このテクノロジーはJavaで動作し、無料のプライベートライセンスまたはアカデミックライセンスを持っている必要があります。

4

1 に答える 1

1

これを実行できるすぐに使用できるテクノロジーに出会ったことはありません。

それを解決する1つの方法は、図のようにキュー(ActiveMQ)を内部で使用し、Netty.ioやJerseyなどのサービスを使用してAPIを作成することです(Nettyの経験はありませんが、同様のアプリケーションにJerseyを使用しました)、外部的に。これには多少のコーディングが必要ですが、それほど素晴らしいことではありませんか? :)

于 2012-11-15T10:59:25.693 に答える