私は両方の概念を読んでいます。主にカフカ。また、JMSと比較して理解を深めます。
Kafkaは、注文された配信と複数のサブスクライバーを保証します。 kafka=それをどのように実現しますか?
Kafkaには複数のパーティションがあります。パーティションごとに1つのコンシューマがあれば、順序を保証できます。複数のパーティションで負荷分散を実現できます。したがって、両方を同時に使用できます。
JMSの場合、複数のキューがある場合、Kafkaと同じではありませんか?
Q1:このシナリオのどちらが良いですか?
Q2:狭く見ていますか? kafka=これ以上のことをしますか?
教えてください。
JMSについて間違っていても、教えてください。
私は以前に同じ質問をしていた:)
書いたように、Kafkaは、単一パーティション内でのみ順序付き配信を保証します。限目。複数のパーティションを使用している場合(並列性が必要)、複数のパーティションをリッスンするコンシューマーは、メッセージBが先に到着したとしても、パーティション2からのメッセージBの前にパーティション1からメッセージAを取得する可能性があります。
次に、KafkaとJMSの違いについて説明します。 JMSには、キューとトピックがあります。キューを使用すると、最初のコンシューマーがメッセージを消費すると、他のコンシューマーはメッセージを受信できなくなります。トピックを使用すると、複数の消費者が各メッセージを受信しますが、スケーリングするのははるかに困難です。 Kafkaのコンシューマグループは、これら2つの概念を一般化したものです。同じコンシューマグループのメンバー間でスケーリングできますが、多くの異なるコンシューマグループ間で同じメッセージをブロードキャストすることもできます。
さらに重要な違いは次のとおりです。 Kafkaトピックに500個のパーティションがあり、一方、500個のJMSメッセージキューがあるとします。また、一定数の生産者と消費者がいることを想像してみましょう。 JMSの場合、各キューを構成して、どのキューがそれらに属しているかを知る必要があります。たとえば一部の消費者がクラッシュしたか、消費者の数を増やす必要があることを検出しましたか?システム全体を手動で再構成する必要があります。これはKafkaに無料で付属しています。つまり、Kafkaは、非常に便利な機能である自動リバランスを提供します。
最後に、Kafkaは非常に高速です。これは、主にいくつかの巧妙なディスク/メモリ転送技術と、JMSのようなブローカーではなく、消費するメッセージに注意を払うためです。このため、消費者は「巻き戻し」することもできます。 2日前。
こちらもご覧ください:
違いに関するかなり良い記事を次に示します。 http://blog.hampisoftware.com/index.php/2016/01/20/Apache-kafka-differences-from-jms/
Kafkaは、トピックの複数のパーティションにわたるメッセージの順序を保証しません。順序はパーティション内でのみ維持されます。厳密な順序付けを実現するには、トピックごとに1つのパーティションを使用する必要があります。