技術共有

Kafka の基本コンポーネント図の推論

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. コントローラーブローカー

ここに画像の説明を挿入します

Kafka クラスターにはコントローラー ブローカーがあり、メタデータの管理と調整を担当します。

Kafka は、クラスター メタデータのストレージおよび管理ツールとして Zookeeper を使用します。 Zookeeper は、すべてのトピック、パーティション、リーダー、レプリカ情報などを含むクラスターのステータス情報を保存します。

クラスターのステータスが変化すると、Controller Broker は変更情報を Zookeeper に書き込みます。

現在のコントローラー ブローカーに障害が発生すると、Kafka クラスター内の他のブローカーがこの状況を検出し、Zookeeper を通じて選挙を実行します。

ブローカーが新しいコントローラー ブローカーとして正常に選出されると、ブローカーは Zookeeper から最新のクラスター メタデータを読み取ります。

保証の仕組み

  • 永続的なメタデータ: Zookeeper はクラスターのメタデータを永続的に保存し、いつでも最新のステータス情報を取得できるようにします。
  • 心拍の仕組み: Broker と Zookeeper の間の接続は、Controller Broker の障害を迅速に検出するためにハートビート メカニズムを通じて維持されます。
  • 選挙の仕組み: Zookeeper の選出メカニズムを通じて、新しいコントローラー ブローカーを迅速に選出し、Zookeeper からメタデータを同期できます。

2. コンポーネントのアーキテクチャ

ここに画像の説明を挿入します

1. ログマネージャー

LogManager主にKafkaのログ(ログ)の保存と取得の管理を担当します。

たとえば、プロデューサーは Partition0 の Leader Broker1 にメッセージを送信します。LogManagerBroker1 の Partition0 のログ ファイルにメッセージを書き込みます。

2. レプリケーション マネージャー

ReplicationManager主にパーティション データのレプリケーションと同期の管理を担当します。

各パーティションのリーダーとフォロワー間の同期は独立して実行されます。つまり、各パーティションには独自の同期プロセスがあり、他のパーティションに依存しません。

各パーティションの同期プロセスは独立していますが、各ブローカーは管理する各パーティション (リーダーまたはフォロワー) に対応するレプリケーション スレッドを開始し、これらのスレッドは特定の同期タスクを処理する責任を負います。

例えば:ReplicationManagerBroker1 に新しく書き込まれたメッセージを Partition0 のフォロワー Broker2 および Broker3 にプッシュします。ReplicationManagerBroker1 から受信したレプリケーション要求は Broker2 と Broker3 で処理され、それぞれのログ ファイルにメッセージが書き込まれます。

3. ソケットサーバー

SocketServerこれは Kafka Broker のコンポーネントであり、ネットワーク接続と I/O 操作の処理を担当します。これは、クライアントや他のブローカーからの接続リクエストを受け入れ、処理のために各接続にスレッドを割り当てる役割を果たします。

4. ネットワークサーバー

NetworkServerこれは Kafka のネットワーク通信フレームワークの中核部分であり、ネットワーク リクエストの管理とスケジュールを担当します。 NIO (ノンブロッキング I/O) を使用して、高度な同時ネットワーク接続を処理します。

5. ZKクライアント

Zookeeper と通信するコンポーネント。