Apache Kafka シリーズ ~そもそもKafkaって?~

kafka
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

今回の記事では、大量のデータを取り扱うにあたって重宝されているApache Kafka について解説していきたいと思います。

 

Kafkaについて

何者?

Apache Kafkaとは、ひたすら流れ続ける情報(ストリーム)を大量に処理するイベントストリーミングプラットフォーム

であり、以下の特徴をもっています。

  • 複数のマシンから構成(クラスター)されているため、マシンがダウンしても他のマシンが代わりに機能する・・・フォールトトレランス
  • データ量に応じてクラスター内の数を調整する・・・スケーラビリティ
  • データ一つ一つを失うことなく、正確に送受信(Exactly Once)するための設定ができる

何に利用されている?

kafkaは主に以下の用途で利用されています

  • ログ収集
    • ログは非常に容量が大きいものになっている場合が多く、スケーラビリティを保証するKafkaがよく利用されます。

  • webサービスのアクティビティトラッキング
    • 顧客のweb上の動きや、商品購入情報などのデータを取り扱うことができます。
  • 地図アプリ(カーナビ)などのリアルタイム情報の取得~抽出など

Kafka の構成

構成図と概要

Kafkaでは、大きく分けてメッセージを送信するProducerと、Producerからメッセージを受け取るCluster(Kafka本体)、Brokerからメッセージを受け取るConsumerの三つ存在します。

kafka概要図

複数あるProducerからClusterにデータを集約させ、また複数のConsumerに向けてデータ送信しています。

このように1か所にデータを保存して任意の場所にデータ送信するシステムをキューイングシステムと呼び、以下のようなメリットがあります

  • Producerが送信先を意識する必要がない
  • 通信経路を単純化することで、通信路の拡張性が上がる

Clusterは以下のように複数のBrokerノードで構成されており、さらにその内部に下段で紹介するTopicやPartition、Replicaなどがあります。

                                                                                                 Cluster内部図

Topic

Producerからのデータを種類ごとに保存する役割を持ちます。図ではTopicは一つだけですが、複数持つことも可能です。

Kafkaでは多くのデータのやりとりをするため、データの話題(Topic)ごとに分けることが必要になってきます。

Topicの例としては次のようなものがあります(商品通販サイトなどの場合)。

  • 顧客の注文する品物を格納するTopic
  • 注文をした顧客自身のデータを格納するTopic

またTopicでは負荷分散のため、複数のPartitionを持つことができます。

Partition

Topicの中に複数存在し、いずれかのパーティションにメッセージを均等に送信することで負荷を少なくします。

Replica

さらにPartitionは複数のReplicaから構成されており、そのうちの1つがLeader Replica、残りはFollower Replicaとなっています。

Leaderは唯一Producer,Consumerからのデータ送受信を行うことができるReplicaです。

一方でFollowerはLeaderからデータを複製し、Leaderのもつデータの状態と一致するようにします。

この、Leaderの状態と同じFollowerのことをIn Sync Replica(ISR)と呼びます。ISRにはLeaderも含まれます。

Leaderがダウンした場合、ISRであるFollowerからLeaderを選ぶことで耐障害性を保証します。

まとめ

Apache kafkaには、データ送信元となるProducerと、Kafka本体であるデータ保管場所のCluster、データを受け取るConsumerがあり、さらにCluster内部にはTopic,Partition,Replicaについて解説しました。

次回はProducer,Consumerについても掘り下げていきたいと思います。

お読みいただきありがとうございました!

アバター画像
About 南 史弥 8 Articles
2021年に入社したのち、パブリッククラウドのkubernetesサービスなどを中心に業務に取り組んでいます。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる