【あぱっちかふか】

Apache Kafka とは?

最終更新:
💡 イベントを保存し、別々の利用者へ届ける「ログの流通網」

イベントを分散したログに保存し、複数の利用者へ届けるイベントストリーミング基盤。ログ収集、注文イベントの配信、データ連携などに使う。

📌 このページのポイント
Kafka:ログを保存して、分担して読む書き込む側TopicGroup AP0012読取 1P1012読取 2P2012読取 3番号は各Partition内の位置(オフセット)
通常の自動割り当ての例。同じグループではPartitionを分担し、別グループは独立して読める。順序はPartition内で保たれ、読んだだけではログは消えない。
ひよこ ひよこ
普通のメッセージキューと何が違うの?
ペンギン先生 ペンギン先生
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はイベントストリーミング基盤の製品名だよ

参考資料

← 用語集にもどる