web-dev-qa-db-ja.com

JMS vs Kafka=特定の条件で

私は両方の概念を読んでいます。主にカフカ。また、JMSと比較して理解を深めます。

Kafkaは、注文された配信と複数のサブスクライバーを保証します。 kafka=それをどのように実現しますか?

Kafkaには複数のパーティションがあります。パーティションごとに1つのコンシューマがあれば、順序を保証できます。複数のパーティションで負荷分散を実現できます。したがって、両方を同時に使用できます。

JMSの場合、複数のキューがある場合、Kafkaと同じではありませんか?

Q1:このシナリオのどちらが良いですか?

Q2:狭く見ていますか? kafka=これ以上のことをしますか?

教えてください。

JMSについて間違っていても、教えてください。

11
GoMan

私は以前に同じ質問をしていた:)

書いたように、Kafkaは、単一パーティション内でのみ順序付き配信を保証します。限目。複数のパーティションを使用している場合(並列性が必要)、複数のパーティションをリッスンするコンシューマーは、メッセージBが先に到着したとしても、パーティション2からのメッセージBの前にパーティション1からメッセージAを取得する可能性があります。

次に、KafkaとJMSの違いについて説明します。 JMSには、キューとトピックがあります。キューを使用すると、最初のコンシューマーがメッセージを消費すると、他のコンシューマーはメッセージを受信できなくなります。トピックを使用すると、複数の消費者が各メッセージを受信しますが、スケーリングするのははるかに困難です。 Kafkaのコンシューマグループは、これら2つの概念を一般化したものです。同じコンシューマグループのメンバー間でスケーリングできますが、多くの異なるコンシューマグループ間で同じメッセージをブロードキャストすることもできます。

さらに重要な違いは次のとおりです。 Kafkaトピックに500個のパーティションがあり、一方、500個のJMSメッセージキューがあるとします。また、一定数の生産者と消費者がいることを想像してみましょう。 JMSの場合、各キューを構成して、どのキューがそれらに属しているかを知る必要があります。たとえば一部の消費者がクラッシュしたか、消費者の数を増やす必要があることを検出しましたか?システム全体を手動で再構成する必要があります。これはKafkaに無料で付属しています。つまり、Kafkaは、非常に便利な機能である自動リバランスを提供します。

最後に、Kafkaは非常に高速です。これは、主にいくつかの巧妙なディスク/メモリ転送技術と、JMSのようなブローカーではなく、消費するメッセージに注意を払うためです。このため、消費者は「巻き戻し」することもできます。 2日前。

こちらもご覧ください:

23
Miljen Mikic

違いに関するかなり良い記事を次に示します。 http://blog.hampisoftware.com/index.php/2016/01/20/Apache-kafka-differences-from-jms/

Kafkaは、トピックの複数のパーティションにわたるメッセージの順序を保証しません。順序はパーティション内でのみ維持されます。厳密な順序付けを実現するには、トピックごとに1つのパーティションを使用する必要があります。

2
abstax