Kafka は読み取りと書き込みの分離をサポートしていません。今日初めて知りました!

Kafka は読み取りと書き込みの分離をサポートしていません。今日初めて知りました!

[[263555]]

Kafka では、メッセージを書き込むプロデューサーとメッセージを読み取るコンシューマーの操作はすべてリーダー レプリカと対話し、プライマリ書き込み、プライマリ読み取りのプロダクションおよびコンシューム モデルを実現します。データベース、Redis などはすべて、マスター書き込み、マスター読み取りの機能を備えており、同時に、読み取りと書き込みの分離を意味するマスター書き込み、スレーブ読み取りの機能もサポートしています。マスター書き込み、マスター読み取りに対応するため、ここではマスター書き込み、スレーブ読み取りと呼ぶことにします。

Kafka はマスター書き込みとスレーブ読み取りをサポートしていません。なぜ?

コードの観点から見ると、コードの複雑さは増しますが、この機能は Kafka で完全にサポートされます。この問題については、「利益ポイント」の観点から具体的な分析を行うことができます。マスター書き込みとスレーブ読み取りにより、スレーブ ノードはマスター ノードの負荷圧力を共有できるため、スレーブ ノードがアイドル状態のときにマスター ノードが過負荷になるのを防ぐことができます。ただし、マスター書き込みスレーブ読み取りアプローチには、2 つの明らかな欠点もあります。

  • データの一貫性の問題。マスターノードからスレーブノードにデータが転送されるときには、必然的に遅延時間ウィンドウが発生し、この時間ウィンドウによってマスターノードとスレーブノード間のデータの不整合が発生します。ある瞬間、マスターノードとスレーブノードの両方でデータ A の値は X です。その後、マスターノードの A の値が Y に変更されます。この変更がスレーブノードに通知される前に、アプリケーションによって読み取られたスレーブノードのデータ A の値は正しい Y ではなく、データの不整合が発生します。
  • 遅延の問題。 Redis などのコンポーネントの場合、データがマスター ノードに書き込まれ、スレーブ ノードに同期されるプロセスは、ネットワーク → マスター ノード メモリ → ネットワーク → スレーブ ノード メモリという段階を経る必要があります。全体のプロセスにはある程度の時間がかかります。 Kafka では、マスターとスレーブの同期に Redis よりも時間がかかります。ネットワーク → マスターノードメモリ → マスターノードディスク → ネットワーク → スレーブノードメモリ → スレーブノードディスクという段階を経る必要があります。レイテンシに敏感なアプリケーションの場合、マスター書き込みスレーブ読み取り機能はあまり適していません。

実際には、多くのアプリケーションは、一定期間にわたって、ある程度の遅延とデータの不整合の両方を許容できます。

では、この場合、Kafka はマスター書き込みとスレーブ読み取りの機能をサポートする必要があるのでしょうか?

マスター書き込みとスレーブ読み取りは一定量の負荷を共有できますが、完全な負荷分散を実現することはできません。たとえば、データ書き込み圧力が非常に高く、読み取り圧力が非常に低い場合、スレーブ ノードは負荷圧力のごく一部しか共有できず、圧力の大部分はマスター ノードに残ります。ただし、Kafka は高度な負荷分散を実現でき、このバランスはプライマリ書き込み、プライマリ読み取りアーキテクチャで実装されます。次の図に示すように、Kafka の生産および消費モデルを見てみましょう。

Kafka クラスターには 3 つのパーティションがあり、各パーティションには 3 つのレプリカがあり、3 つのブローカーに均等に分散されています。灰色の陰影はリーダー レプリカを表し、灰色以外の陰影はフォロワー レプリカを表します。点線は、フォロワー レプリカがリーダー レプリカからメッセージをプルすることを示します。プロデューサーがメッセージを書き込むと、そのメッセージはリーダー コピーに書き込まれます。上の図の状況では、各ブローカーにはプロデューサーからのメッセージが流れ込んでいます。コンシューマーがメッセージを読み取ると、そのメッセージはリーダー コピーからも読み取られます。図 8-23 の状況では、各ブローカーからコンシューマーにメッセージが流れ出ています。

各ブローカーの読み取り負荷と書き込み負荷が同じであることが明確にわかります。これは、プライマリ書き込みとセカンダリ読み取りでは実現できない負荷分散を、Kafka がプライマリ読み取りを通じて実現できることを意味します。上図は理想的な展開状況を示しています。次のような状況(これらに限定されません)では、ある程度の負荷の不均衡が発生する可能性があります。

(1)ブローカー側のパーティションが不均等に分散されている。トピックを作成するときに、一部のブローカーにはより多くのパーティションが割り当てられ、他のブローカーにはより少ないパーティションが割り当てられる場合があり、当然、リーダー レプリカは不均等に割り当てられます。

(2)プロデューサーが書くメッセージにばらつきがある。プロデューサーは、一部のブローカーのリーダー コピーに対してのみ大量の書き込み操作を実行し、他のブローカーのリーダー コピーを無視する場合があります。

(3)消費者は情報を不均等に消費している。コンシューマーは、一部のブローカーのリーダー コピーに対してのみ大量のプル操作を実行し、他のブローカーのリーダー コピーを無視する場合があります。

(4)リーダーレプリカは不均一に切り替わる。実際のアプリケーションでは、ブローカーの障害により、マスター レプリカとスレーブ レプリカの切り替えや、パーティション レプリカの再配布などが発生する可能性があります。これらのアクションにより、各ブローカー内のリーダー レプリカの配布が不均一になる可能性があります。

これに対してはいくつかの予防策を講じることができます。

最初のケースでは、トピックを作成するときに、パーティションの分散をできるだけバランスよくするようにしてください。幸いなことに、Kafka の対応する分散アルゴリズムもこの目標を達成しようと努めています。開発者がディストリビューションをカスタマイズする場合は、この点に注意する必要があります。 2 番目と 3 番目の状況では、マスター書き込みとスレーブ読み取りでも解決できません。 4 番目のケースでは、Kafka はリーダー レプリカのバランスを実現するために優先レプリカ選択を提供します。同時に、対応する監視、警報、運用保守プラットフォームと連携して、バランスのとれた最適化を実現することもできます。

実際のアプリケーションでは、監視、アラーム、運用と保守を組み合わせたエコロジカル プラットフォームの助けを借りて、Kafka はほとんどの場合に高度な負荷分散を実現できます。

一般に、Kafka はプライマリ書き込みとプライマリ読み取りのみをサポートしており、これにはいくつかの利点があります。

コードの実装ロジックを簡素化し、エラーの可能性を減らすことができます。負荷の粒度を均等に分散できます。マスター書き込みスレーブ読み取りモデルと比較すると、負荷パフォーマンスが優れているだけでなく、ユーザーによる制御も可能です。遅延の影響はありません。

レプリカが安定している場合、データの不整合は発生しません。このため、Kafka は、何のメリットもないマスター書き込みスレーブ読み取り機能をなぜ実装する必要があるのでしょうか?これらすべては、カフカの優れたアーキテクチャ設計によるものです。ある意味、マスター書き込みスレーブ読み取り機能は、設計上の欠陥による暫定的な対策です。

<<:  EasyStack Enterprise Cloud は、河南省病院のプライベート クラウド プラットフォームが大規模な医療ビジネス システムをサポートするのを支援します。

>>:  クラウドネイティブ業界の初カンファレンスが開幕、クラウドネイティブの本当のチャンスと実践を紹介

推薦する

SEOは実行力だけでなく、データ分析も得意でなければならない

ご存知のとおり、SEO 最適化は非常に大変な仕事です。毎日同じことを何度も繰り返すことを意味します。...

あなたは本当に JVM を理解していますか? JVM のメモリ領域とその機能は何ですか?

1.0 序文前回は、.class ファイルが jvm にロードされる方法について説明しました。しかし...

クラウドネイティブ アプリケーションのセキュリティにかかるコスト

現在、60% を超える組織が、新しいアプリケーションの大部分がクラウドで構築されていると報告していま...

ウェブサイトの最適化戦略は、ウェブサイトの発展に合わせて常に調整する必要があります。

私たちのウェブサイトは1年以上運営されており、多額の費用を支払い、少しの利益を得ています。今日、上司...

新規ウェブサイトが30日間の運用で10万元を費やしたにもかかわらず、上位にランクインできなかった理由の分析

月給5,000~50,000のこれらのプロジェクトはあなたの将来です「頭が痛い、頭が痛い…」最近Ti...

テンセントクラウドが新しい星星海サーバーをリリース、従来製品のアプリケーション規模は前年比30倍に増加

3月16日、Tencent Cloudは自社開発の新世代星星海サーバーのリリースを発表した。サーバー...

ウェブマスターネットワークからの毎日のレポート:DangdangがTmallに参入、Xiaomiの高コストパフォーマンスが課題に直面

1. 当当が正式に天猫に参入し、書籍や日用品に注力Dangdang.comは10月30日正午、書籍と...

ウェブサイトの SEO 効果を最大化するにはどうすればいいですか?この仕事を定期的に行うだけです。

画像出典: Tuchong Creativeホームページ構築が完了し、しばらくSEO対策が始まってい...

ウェブサイトの掲載に影響を与える要因の簡単な分析(I)

自分のウェブサイトが含まれていない場合はどうすればいいですか? 重みが足りない場合は、フレンドリーリ...

#メモリアル デー# RackNerd: ロサンゼルスの VPS は年間 14.99 ドルから、メモリ 1G/コア 1/SSD 20g/トラフィック 3T

Racknerd は、米国のメモリアル デーに特別プロモーションを実施しました。割引 VPS が設置...

WeChat時代のマーケティングの役割の分析

現在最も人気のアプリケーションはWeChatです。長い間QQの使い方を知らなかった超初心者でも簡単に...

ランキングを向上させる最善の方法は、ユーザーに真摯にアプローチすることです。

検索エンジンのコア アルゴリズムは、非常に複雑で理解するのが難しいと思われるため、すべての検索最適化...

企業が革新的精神で未来を築くことを支援するために Amazon Web Services China Summit が開催

今、私たちは歴史的な転換点にあり、大きな変化が起こっています。生成型 AI の出現により、人工知能技...