IBM Cloud Docs
Apache Kafkaのコンセプトを学ぶ

Apache Kafkaのコンセプトを学ぶ

Apache Kafka は、多数のバッチ・ワークロード、リアルタイム・データ統合、およびデータ・ストリーミングのユース・ケースのために多くの企業によって使用される分散ストリーミング・プラットフォームです。

Kafka アーキテクチャー図。
The diagram shows a Kafka architecture.

以下に、Apache Kafka の概念をいくつか定義してリストします。

ブローカー

Apache Kafka は、分散メッセージング・システムです。 Kafka クラスターはブローカーの集合です。 クラスターには、最低 3 つのブローカーがあります。

Brokers の図。
Diagram that shows an example cluster with three brokers.

メッセージ

メッセージは、Kafka におけるデータの単位です。 各メッセージが 1 つのレコードとして表され、レコードはキーと値の 2 つの部分からなります。 キーは一般的にメッセージに関するデータ用に使用され、値はメッセージ本体です。 Kafka ではレコードいう用語とメッセージという用語が区別せずに使用されています。

トピックとパーティション

各トピックは、名前付きのメッセージ・ストリームです。 1 件のトピックは 1 つ以上のパーティションからなります。 パーティション上のメッセージは、オフセットと呼ばれる番号順に配列されます。 複数のパーティションをブローカーに分散させることで、トピックのスケーラビリティが向上する。

1 つのトピックに複数のパーティションがある場合、クラスター全体でそれらのパーティションを配分することによって、データを並行してフィードし、スループットを向上させることができます。 パーティションの数は、コンシューマー間の作業負荷のバランシングにも影響します。

詳しくは、パーティションのリーダーを参照してください。

トピックとパーティション図。
The diagram shows one topic with three partitions that are spread across three brokers.

複製する

可用性を向上させるため、各トピックを複数のブローカーに複製することができます。 パーティションごとに、ブローカーの 1 つがリーダーであり、それ以外のブローカーはフォロワーです。

レプリカの生成は、フォロワーがリーダーからメッセージを繰り返し取り出すことで機能します。

複製ダイアグラム。
The diagram shows a topic partition that is replicated across three brokers.

同期レプリカ

パーティション・リーダーに遅れずについていっているフォロワーのレプリカは、同期しています。 どのフォロワーでも、同期レプリカを保有していれば、メッセージ損失なしにリーダーになることができます。

パーティション・リーダーに障害が発生した場合、別のリーダーがフォロワーの中から選択されます。 通常、すべてのレプリカが同期されます。 障害の発生後にレプリカがキャッチアップしている間、レプリカが一時的に非同期になることは許容されます。

in-sync-replicas の図。
The diagram shows a topic partition that is replicated across three brokers and staying in-sync across all replicas.

プロデューサー

プロデューサーは、1 つ以上のトピックにメッセージをパブリッシュするクライアント・アプリケーションです。 プロデューサーは、1 つ以上のトピックにパブリッシュすることができます。 また、オプションで、データを格納するパーティションを選択できます。

また、プロデューサがパブリッシュするメッセージに対して受け取る確認応答のレベルを選択することで、速度や信頼性を優先するようにプロデューサを構成することもできます。

詳しくは、メッセージのプロデュースを参照してください。

プロデューサー・ダイアグラム。
The diagram shows a producer publishing messages to one topic across three brokers.

コンシューマー

コンシューマーは、1 つ以上のトピックからメッセージを読み取り、それらを処理するクライアント・アプリケーションです。 コンシューマーの現在位置とパーティションにある最新メッセージとの差をオフセット・ラグと呼びます。

時間の経過とともにラグが増加している場合、それは、コンシューマーが遅れずについていくことができていないことを意味します。 短期的には、これは問題ではありませんが、保存期間を超過すると、最終的にコンシューマーがメッセージを見逃す可能性があります。

詳しくは、メッセージのコンシュームを参照してください。

コンシューマーの図。
The diagram shows a consumer processing messages from one topic across three brokers.

コンシューマー・グループ

コンシューマー・グループには、トピックのメッセージを処理するために一緒に作業する 1 つ以上のコンシューマーが含まれます。 単一パーティションからのメッセージは、各グループ内の 1 つのコンシューマーによって処理されます。

任意の時点において、各パーティションは、グループ内の 1 つのコンシューマーにのみ割り当てられます。 この割り当てにより、各パーティション上のメッセージが順番に処理されることが保証される。

グループ内にコンシューマーより多くのパーティションが存在する場合、一部のコンシューマーには複数のパーティションがあります。 パーティションより多くのコンシューマーが存在する場合、一部のコンシューマーにはパーティションがありません。

コンシューマー・グループの図。
The diagram shows a consumer processing messages from one topic across three brokers.

詳細情報

詳しくは、 Apache Kafka の資料を参照してください。