パーティションのリーダーシップについて
各パーティションで、クラスター内の 1 つのサーバーがパーティションのリーダーとして動作し、その他のサーバーはフォロワーとして動作します。 パーティションのすべてのプロデュース要求およびコンシューム要求はリーダーによって処理されます。 フォロワーは、リーダーに遅れずについていくため、リーダーからパーティション・データを複製します。 フォロワーがパーティションのリーダーに遅れずについていっている場合、フォロワーのレプリカは同期しています。
パーティション・リーダーにメッセージが送信されても、そのメッセージはすぐにコンシューマーで使用可能にはなりません。 リーダーはメッセージのレコードをパーティションに付加し、その際、そのパーティションの次のオフセット数値をそのレコードに割り当てます。 同期レプリカのすべてのフォロワーがレコードを複製し、レコードをレプリカに書き込んだことを確認すると、レコードは コミットされます。 そのメッセージはコンシューマーで使用可能です。
パーティションのリーダーで障害が起こると、同期レプリカを持つフォロワーのうちの 1 つが自動的にパーティションのリーダーを引き継ぎます。 実際には、どのサーバーも、いずれかのパーティションのリーダーであり、その他のパーティションのフォロワーです。 新しいリーダーのレプリカを指定するプロセスは、リーダーシップ選挙と呼ばれます。 パーティションのリーダーの決定は動的であり、サーバーの追加および削除のたびに変化します。
アプリケーションはパーティションのリーダーの変更を処理するための特別な処理を行う必要はありません。 Kafka クライアント・ライブラリーは、クラスターの設定中に待ち時間が長くなりますが、自動的に新しいリーダーに再接続します。