【あぱっちかふか】
Apache Kafka とは?
最終更新:
💡 イベントを保存し、別々の利用者へ届ける「ログの流通網」
イベントを分散したログに保存し、複数の利用者へ届けるイベントストリーミング基盤。ログ収集、注文イベントの配信、データ連携などに使う。
📌 このページのポイント
- イベントは読み取っただけでは消えず、保持設定に従って保存される
- TopicをPartitionに分け、書き込みと読み取りを並列化する
- 順序が保たれる範囲は、同じPartitionの中
- 別のConsumer Groupは、同じイベントを独立して読める
普通のメッセージキューと何が違うの?
Kafkaは読んだだけではイベントを消さず、保持設定に従ってログに保存するんだ。保存されている範囲なら読み直せるし、別のConsumer Groupから独立して読むこともできる。たとえば注文イベントを、在庫更新と集計がそれぞれ利用できるよ。永久保存や一定の処理速度を保証するわけではないんだ。
TopicとPartitionは何?
Topicはイベントをまとめる単位で、Partitionはその中の分割されたログだよ。Producerが書き込み、Consumerが読み取る。分割すると並列処理できるけれど、順序が保たれるのは同じPartitionの中。複数のPartitionをまたいで、すべてのイベントに一つの順番が付くわけではないんだ。
Consumer Groupでは全員が同じイベントを読むの?
通常の自動割り当てでは、同じグループの中でPartitionを分担し、一つのPartitionは一人のConsumerが担当するよ。別グループなら同じPartitionを独立して読める。処理を分担したいのか、同じイベントを別の用途で使いたいのかで、グループの分け方が変わるんだ。
障害の後はどこから再開するの?
Partition内の位置を表す番号をオフセットと呼ぶよ。コミットしたオフセットを使って再開できるけれど、それだけで外部DBへの書き込み成功まで保証されるわけではない。DBへ書いた後、コミット前に止まれば、再開時に同じ処理を繰り返すこともある。保存と処理のタイミングを合わせて設計するんだ。
運用では何を管理するの?
Partitionの割り当てや複製、保存期間、読み取りの遅れなどを管理するよ。ログ収集やデータ連携の基盤にできる一方、分散した仕組みの監視も必要なんだ。Kafka 4.0以降はKRaftを使い、ZooKeeperモードは削除されている。旧クラスタの更新では、公式の移行手順と対応バージョンを確認しよう。
まとめ:ざっくりこれだけ覚えればOK!
「Kafka」って出てきたら「イベントをログに保存し、別々の利用者へ届ける基盤」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Kafka」 = アパッチ・カフカ
💬 Apache Kafkaはイベントストリーミング基盤の製品名だよ