logo

カフカのトピック

前のセクションでは、Apache Kafka、メッセージング システム、ストリーミング プロセスについて簡単に説明しました。ここでは、Kafka の基本的な概念と役割について説明します。

トピック

一般に、トピックとは、特定の見出し、または相互に関連する特定のアイデアに付けられた名前を指します。 Kafka では、トピックという言葉は、特定のデータ ストリームを保存および公開するために使用されるカテゴリまたは一般名を指します。基本的に、Kafka のトピックはデータベース内のテーブルに似ていますが、すべての制約が含まれているわけではありません。 Kafka では、必要に応じて n 個のトピックを作成できます。これはユーザーの選択に応じた名前によって識別されます。プロデューサはトピックにデータをパブリッシュし、コンシューマはサブスクライブすることでトピックからそのデータを読み取ります。

パーティション

トピックは、トピックのパーティションと呼ばれるいくつかの部分に分割されます。これらのパーティションは順序に従って分割されます。データ コンテンツはトピック内のパーティションに保存されます。したがって、トピックを作成するときに、パーティションの数を指定する必要があります(数は任意であり、後で変更できます)。各メッセージは、オフセット値と呼ばれる増分 ID を持つパーティションに保存されます。の順序は、 オフセット値 はパーティション内のみで保証され、パーティション全体では保証されません。パーティションのオフセットは無限です。

注記:一度パーティションに書き込まれたデータは変更できません。それは不変です。オフセット値は常に増分状態のままであり、空のスペースに戻ることはありません。また、データは限られた期間だけパーティションに保存されます。

パーティションを含むトピックを理解するための例を見てみましょう。

カフカのトピック

トピックに 3 つのパーティション 0、1、2 が含まれているとします。各パーティションには異なるオフセット番号があります。データは各パーティションの各オフセットに分散されます。パーティション 0 のオフセット 1 のデータは、パーティション 1 のオフセット 1 のデータとは何の関係もありません。ただし、パーティション 0 のオフセット 1 のデータは、パーティション 0 のオフセット 2 に含まれるデータと相互関連しています。

ブローカー

ここで、Apache Kafka の役割が登場します。

Kafka クラスターは、ブローカーまたは Kafka ブローカーと呼ばれる 1 つ以上のサーバーで構成されます。ブローカーは、複数のパーティションを持つ複数のトピックを保持するコンテナーです。クラスター内のブローカーは整数 ID のみで識別されます。 Kafka ブローカーとも呼ばれます。 ブートストラップブローカー 1 つのブローカーとの接続はクラスター全体との接続を意味するためです。ブローカーにはデータ全体が含まれていませんが、クラスター内の各ブローカーは他のすべてのブローカー、パーティション、トピックについて知っています。

カフカのトピック

これは、n 個のパーティションを持つトピックを含む図でのブローカーがどのように見えるかです。

例: ブローカーとトピック

Kafka クラスターが 3 つのブローカー (Broker 1、Broker 2、Broker 3) で構成されているとします。

カフカのトピック

各ブローカーはトピック、つまり 3 つのパーティション 0、1、2 を持つ Topic-x を保持しています。すべてのパーティションは 1 つのブローカーだけに属しているわけではなく、常に各ブローカー間で分散されている (量に応じて) ことに注意してください。ブローカー 1 とブローカー 2 には、2 つのパーティション 0 と 1 を持つ別のトピック y が含まれています。したがって、ブローカー 3 はトピック y からのデータを保持しません。また、ブローカー番号とパーティション番号の間にはいかなる関係も存在しないと結論付けられます。