web-dev-qa-db-ja.com

AMQPとZeroMQの違い

最近、分散システム/計算に関心を持って、これらのAMQP(RabbitMQ、ActiveMQ)およびZeroMQテクノロジーの調査を開始しました。グーグルとStackOverflowが動き回っていたが、2つの間の明確な比較を見つけることができなかった。

私が得た最も遠いのは、2つは実際には比較できないということですが、違いを知りたいです。 ZeroMQはより分散化されており(メッセージブローカーがメッセージを処理したり、配信を保証したりすることはありません)、高速ですが、本格的なシステムではなく、アクターのように、よりプログラム的に処理されるものです。

一方、AMQPは、中央のメッセージブローカーが信頼性の高い配信を保証する、より本格的なシステムのようですが、このため、ZeroMQよりも低速です。ただし、中央ブローカーは単一障害点を作成します。

おそらく、比喩はクライアント/サーバー対P2Pでしょうか?

私の発見は本当ですか?また、一方を他方の上に使用することの長所、短所、または使用例は何でしょうか? * MQとAkkaActorsのようなものの使用法の比較も素晴らしいでしょう。

[〜#〜] edit [〜#〜]もう少し見回しました。ZeroMQはAMQPの新しい候補のようですが、はるかに高速であるようです。問題は採用/実装だけですか?

25
adelbertc

AMQPはプロトコルです。 ZeroMQはメッセージングライブラリです。

AMQPは、フロー制御と信頼性の高い配信を提供します。これは、メッセージの標準であるが拡張可能なメタデータを定義します(たとえば、reply-to、time-to-live、およびアプリケーションで定義されたヘッダー)。 ZeroMQは、単にメッセージの区切りを提供し(つまり、バイトストリームをアトミックユニットに分割し)、基盤となるプロトコル(TCPなど)のプロパティが十分であるか、アプリケーションがフロー制御や信頼性などの追加機能をZeroMQ上に構築することを前提としています。 。

以前のバージョンのAMQPはクライアント/サーバーラインに沿って定義されていたため、ブローカーが必要でしたが、AMQP 1.0には当てはまりません。これは、コアが対称的なピアツーピアプロトコルです。仲介者(ブローカーなど)のルールは、その上に階層化されています。ブローカーとブローカーレスを比較するAlexisからのリンクは、そのような仲介者が提供できる利点の良い説明を提供します。 AMQPは、クライアント、「スマートクライアント」、ブローカー、ブリッジ、ルーターなど、さまざまなコンポーネント間の相互運用性のルールを定義しているため、有用なパーツを選択することでシステムを構成できます。

14
Gordon Sim

AMQPと0MQのかなり詳細な比較を次に示します。 http://www.zeromq.org/docs:welcome-from-amqp

0MQは、いくつかの実装とコミュニティを備えたプロトコル(ZMTP)でもあることに注意してください。

19
Pieter Hintjens

ZeroMQには、メッセージキューがまったくないため、この名前が付けられています。これは、通常のソケットよりもメッセージングセマンティクスを使用する方法を提供するだけです。

AMQPは、メッセージキューイングの標準プロトコルであり、すべてのメッセージの送受信を処理するメッセージブローカーで使用することを目的としています。ブローカーを介してすべてのメッセージトラフィックを集中させるため、利用可能な多くの機能があります。これは遅いように聞こえるかもしれませんが、ホスト間の遅延が小さいデータセンター内で使用すると、実際には非常に高速になります。

5
Michael Dillon

多くの異なるものを比較しているあなたの質問にどのように答えるかは本当にわかりません...しかし、これらの問題を掘り下げるのに役立つかもしれないこれを見てください: http://www.rabbitmq。 com/blog/2010/09/22/broker-vs-brokerless /

2
alexis

ブローカーレスは、ActiveMQ、QPid、Kafka)のような単純な配線のメッセージブローカーと比較すると、誤った呼び方です。

これは便利で、ホットスポットに適用してネットワークホップを減らし、レイテンシーを減らすことができます。信頼性、ストアアンドフォワード機能、高可用性の要件を追加するため、疎結合をサポートするためにデータを共有するためのキューとともに分散ブローカーサービスが必要になる可能性があります-時間的に分離-このトポロジとアーキテクチャはZeroMQを使用して実装できます。ユースケースを検討し、非同期メッセージングが必要かどうかを確認する必要があります。必要な場合は、ZeroMQが適している場合、それが表示されるソリューションで優れた役割を果たします。 TCP/IPとソケットプログラミングの合理的な知識は、ZeroMQ、AMQPなどの他のすべてに感謝するのに役立ちます。

1
Sram

AMQP(Advanced Message Queuing Protocol)は、適合クライアントアプリケーションが適合メッセージングミドルウェアブローカーと通信できるようにする標準のバイナリワイヤーレベルプロトコルです。 AMQPを使用すると、異なる企業間または企業内のクロスプラットフォームサービス/システムで、メッセージブローカーのベンダーやプラットフォームに関係なく、相互にメッセージを簡単に交換できます。 RabbitMQ、Apache QPid、ApacheApolloなどのAMQPプロトコルを実装しているブローカーはたくさんあります。

ZeroMQは、スケーラブルな分散アプリケーションまたは並行アプリケーションでの使用を目的とした高性能の非同期メッセージングライブラリです。メッセージキューを提供しますが、メッセージ指向ミドルウェアとは異なり、ØMQシステムは専用のメッセージブローカーなしで実行できます。

0
java_geek