web-dev-qa-db-ja.com

Apache kafkaとActiveMQの違いは何ですか

Apache Kafkaに取り組んでいます。どちらが良いか知りたい:KafkaまたはActiveMQこの2つの技術の主な違いは何ですか? Spring MVCにKafkaを実装します。

28
Boxer Robert

KafkaとActiveMQは重複する場合がありますが、元々は異なる目的のために設計されました。したがって、それらを比較することは、Appleとオレンジを比較するようなものです。

Kafka

Kafkaは、非常に優れた水平スケーリング機能を備えた分散ストリーミングプラットフォームです。これにより、アプリケーションはディスク上でstreamed dataを処理および再処理できます。スループットが高いため、リアルタイムデータストリーミングによく使用されます。

ActiveMQ

ActiveMQは、AMQP、STOMP、MQTTなどの複数のメッセージングプロトコルをサポートする汎用メッセージブローカーです。 Enterprise Integration Patterns と同様に、より複雑なメッセージルーティングパターンをサポートします。一般的には、特に Service Oriented Architecture でのアプリケーション/サービス間の統合に主に使用されます。

35
Chris Lam

どのブローカーを使用するか(およびKafkaが登場するとき)についての議論で留意すべきことの1つは、頻繁に参照される Kafkaベンチマーク が現代の上限を示していることです分散コンピューター。今日のブローカーはすべて、MB /秒でほぼ同じ合計容量を持っています。 Kafkaは、他のブローカーと比較した場合、小さなメッセージ(10〜1024バイト)で非常にうまく機能しますが、約75 Mb/sマークで制限されます。

「クラスタリング」について話すとき、特にリンゴとオレンジの比較があります。 ActiveMQおよびその他のエンタープライズブローカーは、メッセージの発行と消費者サブスクリプションの追跡をクラスター化します。 Kafkaはパブリッシングをクラスター化し、コンシューマーがサブスクリプションを追跡することを要求します。最小限に思えますが、大きな違いがあります。

すべてのブローカーには同じバックプレッシャーの問題があります。Kafkaは、ブローカーがディスクに同期するのをプロデューサーが待たない「遅延パーシステンシー」を実行できます。これは多くのユースケースに適していますが、スライドショーでppatiernoが言及しているI-care-every-every-single-messageシナリオではないでしょう。

Kafkaは、小さなメッセージのビッグデータ処理などの水平スケーリングに非常に適しています。 ActiveMQは、エンタープライズメッセージングと呼ばれるユースケースのクラスにより理想的です(これは単なる用語であり、Kafkaがエンタープライズに適していないという意味ではありません)-トランザクションデータ(Kafkaはこれを追加しています。.キオスク..小売店..ストアアンドフォワード.. dmzトラバーサル..データセンター間データセンター公開..など

11
Matt Pavlovich

毎週この質問を聞きます... ActiveMQ(一般にIBM MQやJMSなど)は従来のメッセージングに使用されますが、Apache Kafkaはストリーミングプラットフォーム(メッセージング+分散ストレージ+データの処理)として使用されます。両方とも異なるユースケース向けに構築されています。

「従来のメッセージング」にはKafkaを使用できますが、Kafka固有のシナリオにはMQを使用できません。

記事「Apache Kafka vs. Enterprise Service Bus(ESB)—Friends、Enemies、またはFrenemies?https://www.confluent.io/blog/Apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/ ))がKafkaがそうではない理由を説明しています競争力はありますが、統合およびメッセージングソリューション(ActiveMQを含む)とその両方の統合方法を補完します。

3
Kai Wähner

Kafka ArchitectureはActiveMQとは異なります。

Kafkaでは、プロデューサーは特定のタイプのメッセージのストリームであるトピックにメッセージを公開します。消費者は、データをプルすることにより、ブローカーの1つ以上のトピックにサブスクライブします。

主な違い:

  1. Kafkaプロデューサーは、ブローカーからの承認を待ちません。ブローカーがプロデューサーと同じ速さでメッセージを処理できる場合、全体的なスループットは高くなります。 ActiveMQは、すべてのメッセージの配信状態を維持する必要がありました。

  2. Kafkaにはより効率的なストレージ形式があります。平均して、各メッセージのオーバーヘッドはKafkaでは9バイトでしたが、ActiveMQでは144バイトでした。これは、ActiveMQがKafkaよりも70%多くのスペースを使用していたことを意味します。

  3. Kafkaはpullベースのメッセージングシステムであり、ActiveMQはPushベースのメッセージングシステムです。パブリッシャーはActiveMQのすべてのコンシューマーにメッセージを送信します。消費者は、カフカで自分の時間にメッセージをプルします。

  4. In Kafka-コンシューマは、古いオフセットに巻き戻し、データを再消費できます。問題を修正し、問題解決後に古いメッセージを再生することにした場合に役立ちます。

上記の効率により、Kafkaスループットは、ActiveMQやRabbitMQなどの通常のメッセージングシステムの2x-4x倍になります。

詳細は notes.stephenholiday.com で読むことができます。

1
Ravindra babu