ストリーム処理と従来のメッセージ処理の基本的な違いは何ですか? kafkaはストリーム処理に適していますが、本質的にはkafkaはActivMQ、RabbitMQなどに似たメッセージングフレームワークです。
一般に、ActiveMQがストリーム処理にも適しているとは言わないのはなぜですか。
メッセージがストリームであるかどうかを判断するのは、消費者がメッセージを消費する速度ですか?
従来のメッセージ処理では、単純な計算をメッセージに適用します。ほとんどの場合、メッセージごとに個別に適用します。
ストリーム処理では、複数の入力ストリームと複数のレコード(つまり、メッセージ)に複雑な操作を同時に適用します(集約や結合など)。
さらに、従来のメッセージングシステムは「過去に戻る」ことはできません。つまり、購読しているすべてのコンシューマに配信されたメッセージを自動的に削除します。対照的に、Kafkaはプルベースのモデル(つまり、消費者がKafkaからデータを引き出す)を使用するため、設定可能な時間にわたってメッセージを保持します。これにより、消費者は複数回-または、新しいコンシューマを追加すると、完全な履歴を読み取ることができます。これにより、より複雑なアプリケーションが可能になるため、ストリーム処理が可能になります。さらに、ストリーム処理は必ずしもリアルタイム処理に関するものではありません-それは処理に関するものです無限入力ストリーム(有限入力に適用されるバッチ処理とは対照的)。
そしてKafka offers Kafka Connect and Streams API-それは、メッセージング/ pub-subシステムではなく、ストリーム処理プラットフォームです(使用する場合でもこれがその中核です)。
基本的にKafkaは、ActiveMQまたはRabbitMQに似たメッセージングフレームワークです。 Confluentがストリーミングに向けてKafkaを作成するための努力があります。
https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
次に、ストリーム処理について話すときにKafkaが登場するのはなぜですか?
ストリーム処理フレームワークは、データの入力によって異なります。バッチ処理では、いくつかのファイルがファイルシステムに保存されており、それを継続的に処理してデータベースに保存する必要があります。 Spark、Stormなどのストリーム処理フレームワークでは、一部のセンサーデバイスから連続入力を取得しますが、apiフィードとkafkaを使用してストリーミングエンジンにフィードします。