数日前、私のグループの友人が私に尋ねました: Kafka の優先度レプリカを変更するにはどうすればいいですか?パーティション内のレプリカの 1 つをリーダーとして指定する必要があります。 ここに画像の説明を挿入 需要分析この問題は、私たちの生産環境では非常によく発生します。多くの場合、トピック内のパーティションのリーダーを変更する必要があります。 たとえば、topic1-0には3つのレプリカ[0,1,2]があります。 「優先レプリカ」ルールに従って その場合、レプリカ 0 がリーダーである必要があります。パーティション内のリーダー レプリカのみが読み取り/書き込みレプリカを提供することは誰もが知っています。 その他のコピーはバックアップとして使用されます。場合によっては、コピー0のパフォーマンスリソースが不足していたり、ネットワークが良好でなかったり、IOの負荷が高かったりするなど、 これは間違いなく、トピックの全体的な読み取りおよび書き込みパフォーマンスに大きな影響を与えます。このとき、リーダーとしてプレッシャーの少ないレプリカに切り替えることが非常に重要です。 優先レプリカ: パーティション内のAR(すべてのレプリカ)情報、最初のレプリカがリーダーとして選択される リーダーメカニズム: パーティションには読み取りと書き込みを担当するリーダーが 1 つだけ存在し、他のレプリカはバックアップとしてのみ使用されます。 では、そのような要件をどのように達成するのでしょうか? 解決原理を理解すれば、それに応じた解決策を考えることができます。パーティションの AR の最初の位置を、指定したコピーに置き換えるだけです。 AR = {0,1,2} ==> AR = {2,1,0} この目標を達成するには、一般的に 2 つの解決策があります。以下で分析してみましょう。 解決策1: パーティションレプリカの再配布これまでにパーティション レプリカの再配布に関する記事を多数書きました。パーティション レプリカの再配布、データ移行、レプリカの拡張と縮小について詳しく知りたい場合は、リンクされた記事をお読みください。ここで簡単にお話しします。 一般に、パーティション レプリカの再配布には主に 3 つのプロセスがあります。
ここでは主にステップ2を見て、移行ファイルが一般的にどのようになっているかを確認します。
この移行 Json は、topic1 のパーティション 0 のレプリカが [0,1,2] に分散されることを意味し、つまり topic1 のパーティション 0 には最終的に {brokerId-0,brokerId-1,brokerId-2} に 3 つのレプリカが存在することになります。 以前書いたパーティションレプリカ再分配原則のソースコード分析を読んだことがあるなら、間違いなく知っているだろう。 以前の割り当て方法が何であっても、最終的なコピー割り当ては [0,1,2] になります。コピー数が多いものは削除され、コピー数が少ないものが追加されます。 それで、私たちのニーズを満たしたい場合は、このJSONファイル内の「replicas」: [0,1,2]を変更するだけでいいのでしょうか? たとえば、これを "replicas": [2,1,0] に変更します。Json を変更した後、それを実行すると、再配布プロセスが正式に開始されます。移行が完了すると、リーダーが上記の最初の位置のレプリカ「2」になっていることがわかります。 長所と短所 利点: 要件が満たされ、リーダーが積極的に切り替えられる デメリット: 操作が複雑で、エラーが発生しやすくなります。まず元のパーティション割り当てデータを取得し、次に Json ファイルを手動で変更する必要があります。ここでは間違いが起きやすく、その影響も比較的大きくなります。もちろん、これらは検証インターフェースを通じて制限できます。最も重要な点は、レプリカの再配布には現時点では 1 つのタスクしか存在しないことです。現在「レプリカ再配布」タスクがある場合、ここでは実行できません。 「レプリカの再配布」は比較的「重い」操作であり、エラーはクラスターに大きな影響を与えます。 解決策2: AR注文を手動で変更するまず、パーティション レプリカ割り当てデータは Zookeeper のノード brokers/topics/{topicName} に保存されていることがわかります。 Topic1 のノード データの例を見てみましょう。
データの説明: バージョン: バージョン情報。現在、「1」と「2」の 2 つのバージョンがあります。 removed_replicas: 削除する必要があるレプリカ データ。パーティション レプリカの再配布プロセス中に、データ移行がほぼ完了すると、余分なレプリカは削除されます。削除が成功すると、ここのデータは消去されます adding_replicas: 追加する必要があるレプリカ データ。パーティション レプリカの再配布プロセス中に、新しく追加されたレプリカが追加されます。追加が完了すると、ここにあるデータはクリアされます。 パーティション: トピックのすべてのパーティション コピーの割り当て方法。上記は、合計 5 つのパーティションとそれに対応するコピー場所があることを示しています。 これを知った上で、優先レプリカを変更したい場合は、Zookeeper 内のノードデータを直接変更するだけでよいのでしょうか?たとえば、パーティション「1」のレプリカの場所を[2,1,3]に変更します。 これを変更した後でも、たとえばkafkaコマンドを実行して、優先レプリカを再選出する必要があります。
--election-type : PREFERRED これは優先コピーモードでの再選出を意味します つまり、これら 2 つの手順を完了すると、優先コピーを変更するという目標は達成されたことになります...? 実際にはそうではありません。なぜなら、ここではZookeeperノードのデータのみが変更されるからです。 bin/kafka-leader-election.sh の再選出操作はコントローラーによって実行されます。コントローラーの役割とソースコードを十分に理解している場合 コントローラーは各トピックのパーティションレプリカ情報を JVM メモリに保存することがわかっています。次に、Zookeeper 内のノードを手動で変更します。これにより、コントローラーが独自のメモリを更新するようにトリガーされません。 つまり、kafka-leader-election.sh を実行しても、優先レプリカは変更を認識しないため、まったく変更されません。 この問題の解決も非常に簡単です。コントローラーにデータの変更を認識させるだけです。最も簡単な方法は、コントローラーにデータを再選択させて再ロードさせることです。 要約する Zookeeper の「AR」順序を手動で変更する コントローラーの再選出 パーティションレプリカの再選出操作を実行する(優先レプリカ戦略) シンプルなコード もちろん、上記の機能は LogiKM に統合する必要があります。簡単なコードは以下のとおりです
長所と短所 利点: 目標需要を達成、シンプル、操作が簡単 デメリット: コントローラの頻繁な再選出は、実稼働環境に何らかの影響を及ぼします。 最適化と改善2 番目の解決策では、コントローラーを再選する必要があります。頻繁な選挙は間違いなく生産環境に影響を与えます。コントローラーには、パーティション レプリカの再配布、トピックの削除、リーダーの選出など、多くの責任があります。 では、コントローラーを再選せずにニーズを満たすにはどうすればよいでしょうか? 私たちの要件は、Zookeeper でノード データを変更すると、コントローラーがそれをすぐに認識し、独自のメモリ データを更新できることです。 この問題については次の記事で紹介します。 質問この記事を読んだ後、考えるべきいくつかの関連する質問をしたいと思います。 順序を変更するだけでなく、コピーを追加または削除して zk の「AR」情報を変更するとどうなりますか? brokers/topics/{topicName}/partitions/{partition number}/state ノードのリーダー情報を手動で変更した場合、リーダーを直接更新できますか? レプリカ選挙プロセス全体はどのようなものですか? 考えてみて下さい、その質問に対する答えを以下の記事で一つずつ解説していきます! |
<<: Kubernetes ソースコード分析: リソースと API
>>: システムとカオスのテスト: クラウドの回復力へのアプローチ
2020 年に入ってから予想外の需要に直面し、ビジネス リーダーと IT リーダーはクラウド運用の計...
ナンドゥのイラスト2013年12月11日、ニューヨーク証券取引所でベルが鳴るとともに、設立されて間も...
翻訳者 |崔浩企画 |徐潔成1. はじめに時間はお金や安全に等しいと認識したとき;データコンプライア...
突然の流行により、ライブストリーミングは予想外に全国的な現象となった。 2006年頃から「ライブスト...
【要約】インターネット業界とは異なり、飲食業界のハードコストははるかに高く、原材料、工場の賃貸料、物...
格安サーバーを販売するアメリカの会社reprisehostingが、正式にAlipay決済を導入した...
クラウド コンピューティングの人気は高まり続けていますが、競争で優位に立つためには、2020 年にク...
インターネットの世界は常に変化しています。アリババによるインタイムへの投資をめぐる論争はまだ収まって...
エッジ コンピューティングは、インテリジェントな相互接続サービスをローカルに提供し、デジタル変革プロ...
【51CTO.comオリジナル記事】毎日何百万台ものマシンやデバイスがインターネットに接続される中、...
eName.cnは4月23日、かつて有名だった飲食O2Oサイト「Fantong.com」が現在破産の...
マルウェアやスパムに感染したくない人は誰もいません。だからこそ、安全な Web サイトを運営するため...
中国の電子商取引のリーダーとして、アリババは自社の発展の機会を正確に把握できるだけでなく、利用可能な...
SwiftVM の低価格 VPS プロモーションでは、Samsung のソリッド ステート ドライブ...
疫病の影響により、企業のビジネスの俊敏性と価値の迅速な実現に対する要求はますます緊急なものとなり、テ...