Apache Kafkaシリーズ Consumer について

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

【5/27開催】事業変革を最新ソフトウェア技術で加速する「OSS利活用事例セミナー」
OSSのビジネス活用事例などを紹介します!登壇者はスカパー様やIPAなど🎤
OSSを活用した新たなビジネス創出やDX推進のヒントを得られる機会です。
https://ossforum.connpass.com/event/318583/
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

みなさんこんにちは、今回は Consumer の基礎や本番環境を運用するうえで欠かせない Consumer groupやこれらを運用していくうえで重要な要素を解説していきたいと思います。

 

Consumer とは?

Consumerはデータを受け取る役割を持ちますが、前回の図のようにConsumerが1つ1つ独立してデータを受け取るということは少ないです。

本番環境においては、一つのグループ内に含まれる複数のコンシューマがkafkaからデータを受け取るということがセオリーです。

そこで以下ではコンシューマグループについて解説していきます。

 

Consumer Group

概要

複数のConsumerからなるグループのことを指します。

Topicからメッセージを読み出したいとき、その中のパーティションの数によっては負荷がかかりすぎてしまいます。

そのためTopic内にある複数のpartitionに対し、group内のconsumerにそれぞれ読み込ませることで負荷を分散することが可能です。

Consumer groupでは以下のルールがあります。

  • 同じpartitionに割り当てられるコンシューマは一個のみ(複数のコンシューマを割り当てることはできません)

  • partitionの数よりコンシューマが少ない場合、全てのpartitionを読み取れるようにコンシューマが割り当てられる

  • partitionの数よりコンシューマが多い場合、余ったコンシューマは待機する

 

 

Consumer Groupの具体的な機能については以下に記載していきます。

Consumer rebalance

何らかの原因でグループ内のconsumerが落ちてしまった場合や新しいconsumerを増やしたい場合、Partitionとconsumerの割り当て関係が変わることを言います。

例えばpartitionが3個、コンシューマが3→2のように、コンシューマが1個増えた場合は、以下のように割り振られ方が変化します。

これがc3が無くなると、

p2,p3のデータをc2が読み込むようになりました。

ちなみにgroup coordinatorと呼ばれるBrokerがrebalanceを行っています。以下でまた解説します。

 

group coordinator

コンシューマグループを管理するBrokerのことを指します。

具体的には以下のような機能があります

  • Consumerに対してpartitionの割り当て
  • Consumer offsetの管理

1つ目は、Consumer group内のどのConsumerがpartitionに割り当てられるかを決定し、Consumerの増減もしくはpartitionの増減に応じてConsumer rebalanceを行います。

coordinatorはConsumerが故障していないかを常にチェックしています。そこで故障を検知するとConsumer groupにrebalanceを命令します。

Consumerを増えた場合、新たにConsumer GroupにConsumerが加わったことをcoordinatorに通知することでrebalanceがトリガーされます。

 

Consumer offset

Consumer groupはどこまでメッセージを読み込んだかを記録するためにOffsetを記録することができます。offsetがあることで、新しく追加されたConsumerがどこから情報を読み取ればいいのかを判断できます。

Offsetの更新、保存はgroup coordinatorで行われており、__consumer_offsetと呼ばれるTopicに保存します。

 

まとめ

ここではConsumer groupの基本的な機能と、Groupを維持するうえでの重要な機能について解説しました。

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

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

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

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


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



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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる