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

★★★ イベント情報 ★★★
◇【参加登録受付中】Kong Summit, Japan 2022◇
今年は12月15日に開催決定!最新情報とデモとともにKongと事例/ユースケースのご紹介などAPIエコノミーやマイクロサービスに関心のある開発者の方にとっては必見です。ぜひお申し込みください!イベントの詳細・お申込はこちら

★★★ Live配信告知 ★★★
◇11月29日開催 19:00~ 世界一わかりみの深いクラウドネイティブon Azure◇
テーマは「Web App for ContainersとKeycloakで最速OpenID Connect」です!

◇11月30日開催 17:00〜 知ってると ちょっと便利なコマンド集◇
知っていると少し効率の上がるようなコマンドをいくつかご紹介します!

今回の記事では、大量のデータを取り扱うにあたって重宝されている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についても掘り下げていきたいと思います。

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





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



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


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる