5

私は興味を持っている:

  • パフォーマンス
    • レイテンシー
    • スループット
    • リソース使用量 (CPU、メモリなど)
  • 高可用性
    • 単一障害点なし
  • 特徴
    • 輸送オプション
    • ルーティング オプション
  • 安定
  • コミュニティ
    • 活発な開発
    • 広く使われています
    • 便利なメーリング リスト、フォーラム、IRC チャネル、...
  • 現在のコードベースとの統合の容易さ
  • 多分落とし穴
  • あなたが私が省略したと思う他のもの

それらについて読んだことがありますが、適切な比較が見つかりませんでした。特に、それらを比較するパフォーマンス ベンチマークに興味があります。(たぶん、自分でやるべきです!そうでないことを願っています。)

4

1 に答える 1

8

他の 2 つを使用したことはありませんが、 ZeroMQでの経験を共有できます。私の意見では、それはあなたのすべてに優れています。

速度とスループット

TCP と同じくらい高速で、CPU や大量のメモリを使用しません。汗をかかずに大量のメッセージを非常に迅速にプッシュできます。メモリが不足する前に、ネットワークチャネルが飽和状態になります(CPUを最大限に活用できるとは思えません)。どこかでRabbitMQとの比較がありましたが、ZMQ はそれを 2 倍上回っています。私が Web で読んだことによると、高速取引で使用されています。

RabbitMQ も非常に優れたツールです。それを見てください - それはあなたが探しているものにぴったりかもしれません

SPOF

アプリケーションを適切に設計すれば、単一障害点はなくなります。2 つのソケットを別のソケットに接続するのは非常に簡単です。そのため、そのうちの 1 つが失敗した場合、もう 1 つが作業を処理します。途中で役立つハイウォーターマークのようなものがあります。SPOF を使用せずにアプリを設計する方法については、 ZeroMQ ガイドをお読みください。

トランスポートとルーティング

トランスポートオプションについて(私がこれを正しく理解している場合)-プロトコルを定義するのはあなた次第です。ZeroMQ は基本的に、このデータの塊を相手先に配信することを約束します。JSON、プロトコル バッファ、モールス信号など、好きなものを使用してください。

AMQP にあるような組み込みのルーティングはありません。繰り返しますが、どの ZeroMQ ソケットがどれに接続するかを指定するのはあなた次第ですが、これは非常に簡単です。

安定

私は数か月間(Pythonを使用して)開発してきましたが、安定性に関する単一の問題は見つかりませんでした. 間違った方法で使用しようとしても、そうしないようにという素敵なエラーがスローされます。一部のサービスを再起動/強制終了して元に戻しても、問題は発生しません。非常に安定したソフトウェアだと思います。

注: 常に最新バージョンを使用してください - 2.1 バージョンは非常に安定性重視であるため、多くの安定性の問題が解決されています。

コミュニティ

20 を超える言語のバインディング、アクティブなメーリング リスト、非常に優れたドキュメント、頻繁なリリース。他に何か?

統合

ライブラリとして設計されているため、(フレームワークの場合とは異なり) アプリケーションを設計するのはあなた次第であり、かなり際立っています。通常の TCP ソケットに少し似ていますが、はるかに強力で使いやすくなっています (通常のソケットの場合のように、メッセージが最初の 128 バイトと残りの部分だけでなく、全体として配信されることが保証されます)。

落とし穴

いくつかありますが、それらはすべてガイドに記載されています。(たとえば、PUB ソケットに (SUB) 接続するときに、PUB ソケットからの最初のいくつかのメッセージを見逃す可能性があります。これについては、ガイドとその処理方法のレシピに説明があります)。

全体

これは、ソフトウェアの中で最も設計されたものの 1 つだと思います。

ガイドを端から端まで読むことをお勧めします。多くの言語 (C++ を含む) の例がよく書かれており、多くのエッジ ケースと問題点が説明されています。

于 2011-08-25T06:39:22.270 に答える