1. カフカを知る
(1) Kafka は、パブリッシュ/サブスクライブ モデルに基づく分散メッセージ キューです。
メッセージ キューの 2 つのモード:
- ポイントツーポイント モード (1 対 1): メッセージ プロデューサーがメッセージを作成してキューに送信し、メッセージ コンシューマーがメッセージをキューから取り出して消費します。メッセージが消費されると、キューにはストレージがなくなるため、メッセージ コンシューマーは消費されたメッセージを消費することができなくなります。Queue は複数のコンシューマの存在をサポートしますが、メッセージの場合、メッセージを消費できるのは 1 つのコンシューマのみです。
- パブリッシュ/サブスクライブ モード (1 対多): メッセージ プロデューサー (パブリッシャー) がメッセージをトピックにパブリッシュし、複数のメッセージ コンシューマー (サブスクライバー) が同時にメッセージを消費します。ポイントツーポイント方式とは異なり、トピックにパブリッシュされたメッセージはすべてのサブスクライバーによって消費されます。
(2) Kafka 関連の概念:
- プロデューサー: メッセージ プロデューサー。Kafka クラスター内のブローカーにメッセージをプッシュします。
- Consumer: メッセージ コンシューマー。Kafka クラスターからメッセージをプルし、メッセージを消費します。
- コンシューマ グループ: コンシューマ グループは 1 つ以上のコンシューマで構成され、各コンシューマはコンシューマ グループに属します。コンシューマ グループは論理的にはサブスクライバです。コンシューマ・グループ内の各コンシューマは、異なるパーティションからのデータを消費する責任があります。パーティションは、1つのグループ内のコンシューマによってのみ消費できます。コンシューマ・グループは相互に影響しません。つまり、各メッセージはコンシューマ グループ内の 1 つのコンシューマによってのみ使用できますが、複数のコンシューマ グループによって使用できます。これにより、ユニキャストとマルチキャストが実現されます。
- ブローカー: Kafka サーバーはブローカーであり、クラスターは複数のブローカーで構成され、各ブローカーは複数のトピックに対応できます。
- トピック: メッセージのカテゴリまたはトピック。論理的にキューとして理解できます。プロデューサはメッセージがどのトピックにプッシュされるかのみに注意を払い、コンシューマはどのトピックにサブスクライブしているかのみに注意を払います。
- パーティション: ロード バランシングとスケーラビリティを考慮して、トピックを複数のパーティションに分割することができます。これらのパーティションは、Kafka クラスター内の複数のブローカーに物理的に保存されます。信頼性上の理由から、各パーティションにはバックアップ レプリカが存在します。
- レプリカ: パーティションのコピー。クラスター内のノードに障害が発生しても、ノード上のパーティション データが失われず、Kafka が引き続き動作できるようにするために、Kafka はコピー メカニズムを提供します。トピックには複数のコピー、1 つのリーダーと複数のフォロワーがあります。
- リーダー: レプリカの主な役割。プロデューサーとコンシューマーはリーダーとのみ対話します。
- フォロワー: レプリカのスレーブの役割は、リーダーからのデータをリアルタイムで同期し、リーダー データとの同期を維持します。リーダーが失敗すると、フォロワーが新しいリーダーになります。
- コントローラー: Kafka クラスター内のサーバーの 1 つ。リーダーの選出とさまざまなフェイルオーバーに使用されます。
- ZooKeeper: Kafka は、Zookeeper を通じてクラスターのメタ情報を保存します。