第3章 Kafka の概要
Apache Kafka は、耐障害性のリアルタイムデータフィードを実現する、オープンソースの分散型 publish/subscribe メッセージングシステムです。
Apache Kafka の詳細については、Apache Kafka のドキュメント を参照してください。
3.1. Kafka のメッセージブローカーとしての動作
Streams for Apache Kafka の使用経験を最大化するには、Kafka がメッセージブローカーとしてどのように動作するかを理解する必要があります。
- Kafka クラスターは、複数のノードで設定されます。
- ブローカーとして動作するノードには、データを受信および保存するトピックが含まれます。
- トピックはパーティションに分割され、そこにデータが書き込まれます。
- フォールトトレランスのために、パーティションはブローカー間で複製されます。
Kafka ブローカーおよびトピック
- ブローカー
- ブローカーはメッセージの保存と受け渡しを調整します。
- Topic
- トピックは、データの保存先を提供します。各トピックは、複数のパーティションに分割されます。
- クラスター
- Broker インスタンスのグループ
- パーティション
- トピックパーティションの数は、トピックの PartitionCount (パーティション数) で定義されます。
- パーティションリーダー
- パーティションリーダーは、トピックの全プロデューサー要求を処理します。
- パーティションフォロワー
パーティションフォロワーは、パーティションリーダーのパーティションデータをレプリケーションし、オプションでコンシューマー要求を処理します。
トピックでは、ReplicationFactor (レプリケーション係数) を使用して、クラスター内のパーティションごとのレプリカ数を設定します。トピックは、最低でもパーティション 1 つで設定されます。
in-sync レプリカ (ISR) はリーダーと同数のメッセージを保持しています。設定では、メッセージを生成できるように同期する必要のあるレプリカ数を定義し、メッセージがレプリカパーティションに正常にコピーされない限りに、コミットされないようにします。こうすることで、リーダーに障害が発生しても、メッセージは失われません。
Kafka ブローカーおよびトピック の図では、レプリケーションされたトピック内に、各番号付きのパーティションにリーダー 1 つとフォロワーが 2 つあることが分かります。