【かふかすとりーむず】
Kafka Streams とは?
最終更新:
💡 Kafkaの流れを、アプリに組み込んだ処理で加工する
Kafkaのデータを継続的に変換・集計する処理を、JVMアプリに組み込むクライアントライブラリ。Kafkaブローカーとは別に、処理するアプリの実行環境が必要。
📌 このページのポイント
- Kafkaのトピックを読み、変換や集計の結果をトピックへ書き出せる
- 専用の処理クラスタは不要だが、アプリの配置・運用は必要
- 状態を使う処理ではローカルストアや変更ログを利用する
- 並列処理はパーティション・タスクと実行するアプリに基づく
KafkaとKafka Streamsはどう違うの?
Kafkaはイベントを保存して届ける基盤で、Kafka Streamsはそのイベントを加工する処理をアプリに組み込むライブラリだよ。ブローカー自体がアプリの集計コードを動かす、という意味ではないんだ。
どんな加工ができるの?
注文を条件で絞る、必要な項目に変換する、商品ごとの金額を集計する、といった処理だよ。Kafkaの入力トピックから読み、結果を出力トピックへ送るアプリを作れるんだ。
専用クラスタが不要なら、サーバーもいらないの?
集計の途中の値はどこに置くの?
アプリを増やせばいくらでも速くなる?
処理をタスクに分け、複数のアプリインスタンスへ割り当てるよ。入力トピックのパーティション数などが並列化の上限に関係する。アプリを増やすだけで無制限に速くなるわけではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「Kafka Streams」って出てきたら「Kafkaのデータ処理をJVMアプリに組み込むライブラリ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Kafka Streams」 = Kafkaのストリーム処理ライブラリ
💬 Apache Kafkaのサブプロジェクトとして開発されたライブラリだよ。streams(流れ)という名の通り、データを流れとして連続処理するんだ