2012-01-03 10 views
3

私は分散アプリケーションの開発に着手しましたが、大きなジレンマがあります。私たちは、使いやすく、以下の機能を備えた通信ライブラリが必要になります。分散アプリケーションの通信ライブラリの選択

  • 信頼性の高い通信
  • グループ/チャンネル
  • ユニキャスト
  • マルチキャスト
  • 自動検出
  • セキュリティをサポート複数のプログラミング言語で
  • 複数のopでサポートeratingシステム
  • 地理的分布を支援する

プラスで、このアプリケーションについていくつかの単語

この分散型プロジェクトの背後にある主なアイデアは、フロントエンド、バックエンド(処理アプリケーション)とエージェントの数百を持っていることです一部のデータセンターからデータを収集します。エージェントとバックエンド間の通信はできるだけシンプルにする必要があります。設定をプッシュするか、エージェントからリアルタイムデータを取得する必要があります。エージェントとバックエンドの間の輸送の最小限のセキュリティが必要です。また、バックエンドクラスタのライブに新しいノードを追加/削除する必要があります。バックエンドクラスタのノード数が変化している場合、エージェントは負荷を再分散する必要があります(おそらく、これはバックエンドによってフィルタリングによって行われるべきです)。通常(エージェントとバックエンドの間の)メッセージは1500バイトを超えませんが、時には大きなパケットを送信できる必要があります(良い断片化管理は必須です)。

  • JGroupsの
  • スプレッド
  • openpgm
  • zeromq
  • Hazelcast

あなたはクラスタリングアプリケーションの開発経験をお持ちの場合は、聞かせてください。私たちは今まで見つけたもの

私は上記のフレームワークのどれが私のプロジェクトに適していますか?また、私のプロジェクトに適した他の無料のライブラリを知っていて、上にリストされていないライブラリがあれば教えてください!

+0

詳細については、私のブログの投稿http://www.randombugs.com/cluster/choosing-communication-library-distributed-application.htmlを参照してください、ここでstackoverflowでコメントしてください。 – Sacx

+0

Akka http://akka.io/をご覧ください。あなたが探しているほとんどの機能があります。 –

+0

AkkaにはC++バインディングがありません。 – Sacx

答えて

2

私はZeroMQを強くお勧めします。 Linux-HAのクラスターメッセージングレイヤーであるHeartbeatも見てください。http://linux-ha.org/wiki/Heartbeat

+0

zmqに関する経験はありますか?なぜあなたが「強くお勧めしますか」を説明してください。 – Sacx

+0

私たちが構築していたクラスタアプリケーションで評価したところ、非常に有望でした。使いやすく、優れたパフォーマンス...最後に、PostgreSQLデータベースを使用してメッセージを公開するという、 pgを信頼することができ、複雑さを取り除くことができました(これはすでにデータストレージに使用されていましたが、ポイントツーポイント通信は不要でした)。メッセージングにSQLデータベースを使用するのは間違っていると感じました。代わりにzmqを使用したかったと思います。 – Joni

+0

本当に私が期待していたものではありませんが、今までは最高の答えです。 – Sacx

-1

私はこの分野での直接の経験はありませんので、私の提案がやや愚かであれば私を許してください。

私は役に立つと思われる無料のライブラリに遭遇しました。これはGoogleによって作成され、Protocol Buffersと呼ばれています。これは、特に言語に依存しないプラットフォームに中立な環境や通信プロトコルの作成に使用するように設計されています。

また、プロトコルバッファ形式で動作するthird party RPC implementationsが多数あります。

私はこれが役に立ちそうです。

+0

プロトコルバッファは、独自のネットワークプロトコルを作成したい場合に便利ですが、この場合はできません。私は自分のプロトコルを書かないようにフリーのライブラリをしたい。提案ありがとう。 – Sacx

1

このpostは、私がこのトピックで見た最も最近の包括的な評価です。また、チェックアウトするhurricane

+0

メッセージキューは非常に包括的ですが、私はC++/Java/Pythonをサポートする通信ライブラリが必要です。これまでのところ0mqだけが本当の "Message Queue"ではないことを知っています。 – Sacx