web-dev-qa-db-ja.com

ストリーム処理とメッセージ処理の違い

ストリーム処理と従来のメッセージ処理の基本的な違いは何ですか? kafkaはストリーム処理に適していますが、本質的にはkafkaはActivMQ、RabbitMQなどに似たメッセージングフレームワークです。

一般に、ActiveMQがストリーム処理にも適しているとは言わないのはなぜですか。

メッセージがストリームであるかどうかを判断するのは、消費者がメッセージを消費する速度ですか?

36
TechEnthusiast

従来のメッセージ処理では、単純な計算をメッセージに適用します。ほとんどの場合、メッセージごとに個別に適用します。

ストリーム処理では、複数の入力ストリームと複数のレコード(つまり、メッセージ)に複雑な操作を同時に適用します(集約や結合など)。

さらに、従来のメッセージングシステムは「過去に戻る」ことはできません。つまり、購読しているすべてのコンシューマに配信されたメッセージを自動的に削除します。対照的に、Kafkaはプルベースのモデル(つまり、消費者がKafkaからデータを引き出す)を使用するため、設定可能な時間にわたってメッセージを保持します。これにより、消費者は複数回-または、新しいコンシューマを追加すると、完全な履歴を読み取ることができます。これにより、より複雑なアプリケーションが可能になるため、ストリーム処理が可能になります。さらに、ストリーム処理は必ずしもリアルタイム処理に関するものではありません-それは処理に関するものです無限入力ストリーム(有限入力に適用されるバッチ処理とは対照的)。

そしてKafka offers Kafka Connect and Streams API-それは、メッセージング/ pub-subシステムではなく、ストリーム処理プラットフォームです(使用する場合でもこれがその中核です)。

63
Matthias J. Sax

基本的にKafkaは、ActiveMQまたはRabbitMQに似たメッセージングフレームワークです。 Confluentがストリーミングに向けてKafkaを作成するための努力があります。

https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

次に、ストリーム処理について話すときにKafkaが登場するのはなぜですか?

ストリーム処理フレームワークは、データの入力によって異なります。バッチ処理では、いくつかのファイルがファイルシステムに保存されており、それを継続的に処理してデータベースに保存する必要があります。 Spark、Stormなどのストリーム処理フレームワークでは、一部のセンサーデバイスから連続入力を取得しますが、apiフィードとkafkaを使用してストリーミングエンジンにフィードします。

6
Paresh