1. はじめに前回の記事では、Consumer が Consumer Group に参加する仕組みを分析しました。実際、前回の記事は非常にマクロなもので、主に ConsumerCoordinator が GroupCoordinator とどのように通信するかについて説明しました。待ってください、Lao Zhou、ConsumerCoordinator と GroupCoordinator とは何ですか?これら 2 つのコンポーネントは、それぞれ Consumer と Kafka Broker のコーディネーターです。簡単に言えば、これらはデザイン パターンにおけるファサード パターンです。具体的な内容については前回の記事を参照して確認することができます。今日の記事では、主に、コンシューマーがコンシューマー グループに参加する方法についての前回の記事で説明したリバランス メカニズムについて説明します。実際、前回の記事では概要を説明しましたが、この記事ではリバランスのメカニズムの具体的な詳細についてさらに詳しく説明します。 ある程度の経験があるプログラマーであれば、リバランスの仕組みは面接の質問として使えると思いますが、それでもかなり難しいです。しかし、自分自身を過小評価する必要はありません。この記事に従うだけで、必ず達成できると信じています。 しかし、一部の読者にとっては難しいと感じるかもしれません。心配しないで。以下の Kafka のトポロジをご覧ください。構造は非常に明確です。 Kafka のトポロジを理解していない場合は、読み進めないことをお勧めします。まず Kafka のトポロジーを明確に理解するか、読み進める前に Lao Zhou の以前の記事を読んでください。効果はもっと良くなると思います。 この記事では、主に以下の点からリバランスのメカニズムについて説明します。
2. リバランスメカニズムとは何ですか?リバランスは、本質的には、コンシューマー グループ内のすべてのコンシューマーが、サブスクライブされたトピックの各パーティションを割り当てるために合意に達する方法を指定するプロトコルです。 新しいメンバーがクラスターに参加したり、一部のトピックにパーティションが追加されたりすると、コンシューマーは消費をどのように再分配するのでしょうか?これにはリバランスの概念が含まれます。 Kafka の再バランス調整メカニズムとは何かを説明します。 この図から、消費者グループ モデルのいくつかの概念がわかります。
上記のコンシューマ グループ モデルを実装するには、トピックに新しいパーティションが追加されたり、コンシューマ グループに新しいメンバーが参加したりするなど、外部環境が変化したときに上記のモデルを維持するための動的な調整を実装する必要があります。この作業は、Kafka の再バランス調整メカニズムによって処理されます。 図からわかるように、Kafka の再バランスは外部トリガーによって発生します。 Kafka の再バランス調整をトリガーする機会を見てみましょう。 3. リバランスメカニズムをいつ起動するか
4. グループステータスの変更4.1 消費者側Consumer 側のファサード ConsumerCoordinator は、AbstractCoordinator 抽象クラスを継承します。コーディネーター AbstractCoordinator の内部クラス MemberState では、コーディネーターの 4 つの状態 (未登録、再割り当て後に応答を受信せず、再割り当て後に応答を受信したが割り当てを受信せず、安定状態) を確認できます。 上記の消費者側の 4 つの状態の遷移を次の図に示します。 4.2 サーバーKafka サーバーの GroupCoordinator には、Empty、PreparingRebalance、CompletingRebalance、Stable、Dead の 5 つの状態があります。状態遷移は次の図に示されています。
5. 旧バージョンの消費者クライアントの問題ConsumerCoordinator と GroupCoordinator の概念は、Kafka バージョン 0.9.0 以降のコンシューマー クライアント向けです。当面は、Kafka バージョン 0.9.0 より前のコンシューマー クライアントを旧バージョンのコンシューマー クライアントと呼びます。古いバージョンのコンシューマー クライアントでは、これらの機能を実装するために Zookeeper の Watcher を使用します。 各消費者グループ 次の図は消費者に関するものです。
各ブローカー、トピック、パーティションは Zookeeper 内のパスにも対応しています。
各消費者は/消費者/にいます このようにして、各コンシューマーは Zookeeper の関連パスを個別に監視します。再バランス操作がトリガーされると、コンシューマー グループ内のすべてのコンシューマーが同時に再バランス操作を実行しますが、コンシューマーは互いの操作の結果を認識できないため、Kafka が誤った状態で動作する可能性があります。同時に、Zookeeper クラスターに大きく依存するこのアプローチには、さらに 2 つの深刻な問題があります。
6. リバランスメカニズムの原則Kafka バージョン 0.9.0 以降のコンシューマー クライアントは、すべてのコンシューマー グループを複数のサブセットに分割するように再設計されました。コンシューマ グループの各サブセットは、それを管理するサーバー上の GroupCoordinator に対応します。 GroupCoordinator は、コンシューマー グループを管理するために使用される Kafka サーバー内のコンポーネントです。コンシューマー クライアントの ConsumerCoordinator コンポーネントは、GroupCoordinator との対話を担当します。
詳細なソースコード分析については、コンシューマー グループに参加する方法に関する以前の記事を参照してください。 7. ブローカー側のバランスシナリオ7.1 新メンバー安定状態になった後、新しいメンバーがコンシューマーグループに参加します 7.2 グループメンバーが自主的に脱退する
7.3 グループメンバーがクラッシュして離脱
7.4 グループメンバーはリバランス中にオフセットを提出する
さて、リバランスのメカニズムについて私が言いたいことは以上です。次の記事では、リバランスを回避する方法について説明します。 この記事はWeChatの公開アカウント「Lao Zhou Talks Architecture」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、Lao Zhou Chats about Architecture パブリックアカウントにご連絡ください。 |
<<: テクノロジーの偏りがクラウド アーキテクチャに与える影響
私たちのネットワークプロモーションにおけるソフト記事プロモーションの位置は、「軸」という単語で説明で...
昨日、Baidu は突然、モバイルナビゲーションアプリを永久に無料にすると発表し、AutoNavi ...
今後数年間でエッジ コンピューティングへの移行が増加するでしょう。この記事では、高い価値を提供するこ...
検索エンジン最適化に携わっている同僚の中には、キーワードについて質問してくる人も多いです。たとえば、...
このシリーズの前の 2 つの記事では、SEO のほぼすべてのアイデアについて説明しました。冒頭で述べ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますInmai...
ソフト記事はオンライン販売の強力なツールです。タイトルはわずか数語ですが、その効果はソフト記事全体の...
4年に一度のワールドカップが近づいています。ワールドカップのたびに、多くのブランドが実際の資金でワー...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトが降格される...
最近、いくつかの SEO フォーラムを閲覧していたのですが、投稿を読んでいると、一部の SEO 担当...
早くも9月に、羅泰帥は「ウェブマスターツールランキングの究極PK:ヒーローたちが艾山の「帽子」を覆っ...
有料リストに詳しい友人は、過去にはトップ 10 が間違いなくゲームアプリケーションだったことを知って...
最近、Baidu のアルゴリズムが継続的に調整されているため、多くのウェブサイトのコンテンツの大部分...
ロサンゼルスの QN データセンターにある Hostmem の VPS がセール中です。3 つの V...
SAP中国研究所とSIA瀋陽研究所は、第3世代の適応型モジュール式インテリジェント製造ソリューション...