2021.10.25

Apache kafkaとは何ぞや ~Kafka内部編~

文:

今回はKafka内のアーキテクチャによって高スケーラビリティや耐障害性をもつ理由を説明したいと思います。

カテゴリ

CONTENTS

この記事をシェア:

Facebook Twitter LINE

皆さんこんにちは。エンジニアの南です。前回ではApache Kafkaについて簡単な概要とユースケースや構成について話しました。

Apache Kafkaの機能、特徴についておさらいすると

機能

  • Producerからメッセージを受け取る
  • Consumerからメッセージ要求があればメッセージを渡す(非同期通信)

特徴

  • 受け取るメッセージ量が増えても、高スケーラビリティによりメッセージのスループットを維持し続けられることが可能
  • 耐障害性がある

でした。しかし、特に特徴においてはなぜ高スケーラビリティなのか?であったり、なぜ耐障害性を持つのか?などについて、まだまだ疑問点が多く残っていると思います。ここではKafkaのアーキテクチャを知ることで、これらの疑問点を解決していきたいと思います。

内部 ~Topic、Partition、Replica~

Topic

Kafkaに送られるデータは、送信者が数多く存在する以上それだけ多くの種類のデータが存在するということになります。Consumerは多くのデータの中から探し出して取得しなければなりません。ここで登場するのがTopicです。Topicはメッセージを種類分だけ存在し、Consumer側がどんなデータが欲しいのかを探し出すのに役立ちます。またProducer側では、どのTopicに送信するのかを決定しておく必要があります。図では、見やすくするためBrokerは一つだけですが、実際は耐障害性のために複数使われています。耐障害性に関してはReplicaの部分で触れていきたいと思います!

Partition

Topicを枝豆のさやだとすれば、Partitionは枝豆です。例えのとおりTopicの中には複数個のPartitionが存在します。複数存在していることで、Producerからの受信やConsumerへの配信などを分散して行うことができます。こうすることでPartition1個あたりのタスクが軽減され、結果的に高スループットの維持につながります。

同じTopicへのメッセージを複数Partitionに分散して送信、受信している

Replica

Partitionの中にさらに複数存在しているのがReplicaです(緑、青楕円)。Kafkaでは、Brokerが複数構成されておりKafka内でのサーバとしての役割を果たします。Replicaが全てのBrokerにまたがっていることで、Brokerのどれかが故障したとしても、残りのBrokerに存在するReplicaからメッセージを読みだすことができます。(耐障害性)

ProducerからLeader Replicaに渡し、Follow Replicaへ渡している

また、Partition内のReplicaのうち、青楕円のものはLeader Replicaと呼ばれ、以下のような役割を果たします。

1. ProducerとConsumerとの送受信を行う

2. Partition内の他のReplica(Follow Replica)に自身の持つデータをコピーして送信する

3. Leader Replicaが故障した場合、残りのFollow RepicaのいずれかがLeaderとなる

2では、Leader Replicaと同じデータを持ったFollow ReplicaのことをIn-Sync Replica(ISR)といいます。

In-Sync Replica(ISR)

Leader ReplicaとLeader Replicaの内容を複製したFollow Replicaのことを指します。ISRであればLeader Replicaの内容を同期しているということになります。Leader Replicaを持つBrokerが故障しても、ISRから読みだせるようになり、耐障害性を担保します。

最小ISR数

最小ISR数とは、Producerがメッセージを書き込むのに必要なISRの数のことでこの値は自由に設定することができます。メッセージを書き込む際、その時点でのISR数が最小ISR数以上であればメッセージ書き込みが可能となります。ISR数が多いほど障害時に復旧データ先が多くなるということなので、最小ISR数の値は大きめに設定するとメッセージ消失のリスクも減らすことにつながります。

まとめ

Kafkaが高スケーラビリティを維持し続けられる理由と、メッセージ保存性が保障される理由についてのお話でした。今回から細かい話となり、難しくなってしまいましたが最後までお読みいただきありがとうございました!!

今解決したいDXの
お困りごとなんですか?

DXの知識、導入事例を知りたい DXの知識、導入事例を知りたい セミナーに参加する

今取り組むべき事業のDX推進や、本当に活用できるコンテナ製品の導入プランをご紹介しています。お気軽に無料ウェビナーにご参加ください。

何から手をつけていいか分からない 何から手をつけていいか分からない サービスソリューションをみる

DX推進に取り組みたいが詳しい人材がいない。
まずどこから始めればいいのか、どういう方法があるのかイメージが掴め切れていない。

自社の具体的な導入を検討している 自社の具体的な導入を検討している 各種お問い合わせへ

コンテナ製品のご提案や人材育成支援も行います。事業のDX推進でお困りの方は、こちらからお問い合わせください。