第3章 Kafka の概要

Apache Kafka は、耐障害性のリアルタイムデータフィードを実現する、オープンソースの分散型 publish/subscribe メッセージングシステムです。

Apache Kafka の詳細については、Apache Kafka のドキュメント を参照してください。

3.1. Kafka のメッセージブローカーとしての動作

AMQ Streams の使用経験を最大化するには、Kafka がメッセージブローカーとしてどのように動作するかを理解する必要があります。

Kafka クラスターは、複数のブローカーで設定されます。ブローカーには、データの受信およびストアに関するトピックが含まれます。トピックはパーティションに分割され、そこにデータが書き込まれます。パーティションは、耐障害性を確保するため、複数のトピックでレプリケーションされます。

Kafka ブローカーおよびトピック

Kafka brokers and topics inside a Kafka cluster showing the partition leader of each topic

ブローカー
サーバーまたはノードと呼ばれるブローカーは、ストレージとメッセージの受け渡しをオーケストレーションします。
トピック
トピックは、データの保存先を提供します。各トピックは、複数のパーティションに分割されます。
クラスター
Broker インスタンスのグループ
パーティション
トピックパーティションの数は、トピックの PartitionCount (パーティション数) で定義されます。
パーティションリーダー
パーティションリーダーは、トピックの全プロデューサー要求を処理します。
パーティションフォロワー

パーティションフォロワーは、パーティションリーダーのパーティションデータをレプリケーションし、オプションでコンシューマー要求を処理します。

トピックでは、ReplicationFactor (レプリケーション係数) を使用して、クラスター内のパーティションごとのレプリカ数を設定します。トピックは、最低でもパーティション 1 つで設定されます。

in-sync レプリカ (ISR) はリーダーと同数のメッセージを保持しています。設定では、メッセージを生成できるように 同期する 必要のあるレプリカ数を定義し、メッセージがレプリカパーティションに正常にコピーされない限りに、コミットされないようにします。こうすることで、リーダーに障害が発生しても、メッセージは失われません。

Kafka ブローカーおよびトピック の図では、レプリケーションされたトピック内に、各番号付きのパーティションにリーダー 1 つとフォロワーが 2 つあることが分かります。