2011-06-28 24 views
0

私は、Javaで分散アプリケーションを設計しようとしています。少数のサーバと少数のマネージャ(サーバを監視および設定するアプリケーション)を使用します。サーバーとマネージャー間のトラフィックのほとんどは、マネージャーからサーバーへの要求ですが、サーバーは何かが発生したときにマネージャーに通知する必要があります。マネージャーはお互いに気にしないし、サーバー同士は気にしませんが、マネージャーは実行中のすべてのサーバーを管理し、サーバーは実行中のすべてのマネージャーによって管理される必要があります。 私は、すべての要求を中央のエンティティを通過させたくありません。双方向Javaクライアント/サーバ通信

この間に通信リンクを実装する最善の方法は何ですか?

  • RESTfulなAPI:単方向通信、私たちはあまり応答し、多くのリソースを無駄にポーリングを必要と私は考える何

  • は、各サーバ/マネージャのペアの間でソケットを開く:私には最良の方法のように見えますが、私は、車輪を再発明することになるような気が...

  • のJava RMI:良さそうに見えますが、それ中央エンティティ(rmiregistry)が必要です。さらに、私はJavaを使用していればそれに悩まされていますし、ポイントツーポイント通信にもっと適しているようです。

  • JMS:同じこと、それは、中央エンティティ(JMSプロバイダ)を必要とし、それが唯一のJavaだ...

ありがとう!

答えて

0

AMPQ/を見RabbitMQの

  1. のRabbitMQは、クラスタ化することができます - それは、ほとんどのプログラミング言語

とも非常に、高速でスケーラブルでのバインディングを持っているhttp://www.rabbitmq.com/clustering.html

  • を見ます安定

  • 0

    JMSブローカーはJavaのみであり、クライアントはまさに何でもよい。

    中央エンティティを必要としない場合は、各サーバー専用の組み込みブローカまたはブローカを使用できます。

    その最も簡単なの一つは、使用を開始(そして速い)を取得するので、私はActiveMQのを使用することになり

    関連する問題