Kafka - パーティション内のさまざまなオフセットの説明


ここに画像の説明を挿入


プライマー

ここに画像の説明を挿入

用語集

Kafka は、ビッグ データの分野で広く使用されている、高性能、高スループットの分散メッセージ システムです。Kafka では、パーティションは重要な概念であり、データをさまざまなノードに分散してロード バランシングと高可用性を実現できます。パーティションには、AR、ISR、OSR、HW、LEO などの重要なオフセット メトリックがいくつかあります。これらのインジケーターの意味と機能について詳しく説明しましょう。

  1. AR(割り当てられたレプリケーション):

    パーティション内のすべてのコピーは、総称して AR (割り当てられたレプリカ) と呼ばれます。

  2. ISR (In-Sync Replicas): 同期レプリカ セット

    ISR は、現在プライマリ レプリカと同期しているレプリカのセットを指します。プライマリ コピーに障害が発生すると、Kafka は ISR から新しいプライマリ コピーを選択して作業を引き継ぎます。したがって、ISR のサイズはパーティションの可用性とパフォーマンスにとって重要です。ISR が小さすぎると、プライマリ コピーに障害が発生したときに、新しいプライマリ コピーを選択するとデータの損失や遅延が発生する可能性があります。ISR が大きすぎると、データの同期コストが非常に高くなり、パーティションのパフォーマンスに影響します。

  3. OSR (Out-of-Sync Replica): 非同期レプリカのコレクション

    OSR は、現在プライマリ レプリカと同期していないレプリカのセットを指します。これらのレプリカは、ネットワーク障害またはその他の理由により、プライマリ レプリカと同期しなくなる可能性があります。OSR の存在はパーティションの可用性やパフォーマンスに影響を与えませんが、OSR が大きすぎると、ディスク領域とネットワーク帯域幅が過剰に占有される可能性があります。

  4. HW (ハイ ウォーターマーク): ハイ ウォーター マーク

    HW は、すべてのレプリカによって複製された最大のオフセットを指します。コンシューマーがパーティションからメッセージを読み取るとき、それまでに読み取ったオフセットを記録し、このオフセットを次の読み取りの開始位置として使用します。コンシューマによって読み取られたオフセットが HW より小さい場合、コンシューマはすべてのレプリカによってコピーされたメッセージのみを読み取ることができます。コンシューマによって読み取られたオフセットが HW より大きい場合、コピーされていないメッセージを読み取ることができます。すべてレプリカ。

  5. LEO (Log End Offset): ログの終わりのオフセット

    LEO は、パーティション内の最後のメッセージのオフセットを指します。プロデューサがメッセージをパーティションに書き込むと、そのメッセージのオフセットが LEO に記録されます。コンシューマはパーティションからメッセージを読み取るときに、LEO を使用してすべてのメッセージが読み取られたかどうかを判断できます。

要約すると、AR、ISR、OSR、HW、および LEO は Kafka の重要なパーティション オフセット インジケーターであり、メッセージの信頼性、耐久性、可用性、およびパフォーマンスを確保するために重要です。Kafkaを使用する場合は、これらのインジケーターの意味と機能を十分に理解し、実際の状況に応じて適切なパラメーター値を設定する必要があります。


パーティション内のさまざまなオフセットの説明

  • パーティション内のすべてのレプリカは、まとめて と呼ばれますAR(Assigned Replicas)

  • リーダー レプリカとのある程度の同期を維持するすべてのレプリカ (リーダー レプリカを含む) ISR(In-Sync Replicas)、ISR セットは AR セットのサブセットです。メッセージは最初にリーダー コピーに送信され、その後、フォロワー コピーは同期のためにリーダー コピーからメッセージをプルできます。同期期間中、フォロワー コピーはリーダー コピーよりもある程度遅れます。上記の「ある程度の同期」とはヒステリシスの許容範囲のことであり、パラメータにより設定可能です。

  • レプリカとの同期が遅れすぎたレプリカ(リーダーレプリカをleader除く)で構成されていることがOSR(Out-of-Sync Replicas)わかりますAR=ISR+OSR通常の状況では、すべてのフォロワー コピーはリーダー コピーとのある程度の同期、つまり AR=ISR を維持する必要があり、OSR セットは空です。

  • leaderコピーには、ISR セット内のすべてのフォロワー コピーの遅延ステータスを維持および追跡する責任があります。フォロワー コピーの遅れが大きすぎる場合、または障害が発生した場合、リーダー コピーはそのフォロワー コピーを ISR セットから削除します。OSR セット内のフォロワー コピーがリーダー コピーに「追いつく」場合、リーダー コピーはそれを OSR セットから ISR セットに転送します。

  • デフォルトでは、リーダー コピーが失敗した場合、ISR セット内のコピーのみが新しいリーダーとして選出される資格があり、OSR セット内のコピーにはチャンスがありません (ただし、この原則は、対応するパラメーター設定を変更することによって変更することもできます)変更します)。

  • ISR は HW および LEO とも密接な関係を持っています。HW は High Watermark の略称で、一般的にハイ ウォーター マークとして知られており、特定のメッセージ オフセット (オフセット) を識別し、コンシューマはこのオフセットより前にのみメッセージをプルできます。

ここに画像の説明を挿入

上の図に示すように、これはログ ファイルを表します。このログ ファイルには 9 つのメッセージがあります。最初のメッセージのオフセット (LogStartOffset) は 0、最後のメッセージのオフセットは 8 です。オフセット 9 のメッセージは次のようになります。破線のボックスで表され、次に書き込まれる A メッセージを表します。ログ ファイルの HW は 6 です。これは、コンシューマがオフセット 0 ~ 5 のメッセージのみをプルでき、オフセット 6 のメッセージはコンシューマには表示されないことを意味します。

LEO は Log End Offset の略で、現在のログ ファイルに書き込まれる次のメッセージのオフセットを識別します。上図のオフセット 9 の位置が現在のログ ファイルの LEO です。LEO のサイズは現在のログ パーティションの最後のメッセージに相当します。 メッセージのオフセット値に 1 を加えます。パーティション化された ISR セット内の各コピーは独自の LEO を維持し、ISR セット内の最小の LEO はパーティションの HW であり、コンシューマは HW より前のメッセージのみを消費できます。

多くの資料では、図のオフセット 5 の位置が HW、オフセット 8 の位置が LEO と誤ってみなされていますが、これは明らかに間違っています。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/yangshangwei/article/details/131779571