ホームページ >Java >&#&チュートリアル >Kafkaメッセージ承認オプション

Kafkaメッセージ承認オプション

Karen Carpenter
Karen Carpenterオリジナル
2025-03-07 17:37:52538ブラウズ

Kafkaメッセージ承認オプション

Kafkaは、パフォーマンスと信頼性の両方に影響を与えるいくつかのメッセージ確認オプションを提供します。 これらのオプションは、消費者がメッセージを正常に処理したことをブローカーに信号する方法を制御します。 重要なオプションは次のとおりです。

  • 自動承認:
  • 消費者は、特定の時間間隔の後または特定の数のメッセージを処理した後にメッセージを自動的に確認します。これは最も単純なアプローチであり、高いスループットであるが犠牲になる信頼性を提供します。消費者が承認する前にクラッシュすると、メッセージが処理されたと見なされ、潜在的にデータの損失につながる。
  • 手動の承認:consumer.commitSync()消費者は、consumer.commitAsync()または
  • メソッドを使用して各メッセージを個別に明示的に認めます。メッセージは、明示的な承認後にのみ消費されると見なされるため、最高の信頼性を提供します。ただし、必要な追加の調整があるため、パフォーマンスオーバーヘッドが付属しています。
  • 特定のオフセットを使用した手動の確認:
  • これにより、より詳細な制御が可能になります。 消費者は、受信したメッセージのバッチ内であっても、特定のオフセットを認めることができます。これにより、合理的なレベルのパフォーマンスを維持しながら個々のメッセージ処理の障害を処理する柔軟性が得られます。 オフセットは、パーティション内の各メッセージの一意の識別子です。 消費者がトピックを購読すると、特定のオフセットから始まる一連のメッセージが受信されます。 謝辞戦略では、消費者がそのオフセットをどのように更新するかを決定し、それらのメッセージを処理したことをブローカーに示します。
    • 自動謝辞:ブローカーは、構成された時間またはメッセージカウントに基づいてオフセットを自動的に更新します。 消費者が自動承認の前に失敗した場合、メッセージは失われます。 この戦略はデータの損失になりやすいが、最高のスループットを提供します。
    • 手動確認(同期):消費者は明示的にオフセットを更新するように呼び出します。これはブロッキング操作です。消費者は、次のメッセージのバッチを処理する前に、ブローカーの確認を待ちます。 これにより、メッセージの配信が保証されますが、同期性のためにパフォーマンスに影響を与えます。consumer.commitSync()
    • マニュアル承認(ASYNC):消費者はを呼び出し、消費者はブローカーの承認を待たずにメッセージの処理を続けることができます。これによりパフォーマンスが大幅に向上しますが、非同期コミットが完了する前に消費者がクラッシュするとデータ損失の可能性が導入されます。 コールバックを使用して、潜在的なコミットフェイルの潜在的な障害を処理できます。consumer.commitAsync()
    • 特定のオフセットを使用した手動の確認:これは、最も制御と柔軟性を提供します。 メッセージの処理が失敗した場合、消費者は特定のオフセットを認めないことを選択でき、後で再処理できます。これは、すべてのメッセージを同期するというパフォーマンスペナルティなしで信頼性を提供します。データの損失。
    手動確認(同期):ブロッキングコールによるスループットの低いが、メッセージ配信は保証されます。 多くの場合、これは最も遅いオプションです。

    手動確認(ASYNC):

    スループットと信頼性のバランスが良好です。 非同期性は、同期的アプローチよりもパフォーマンスが向上しますが、同期の認識と比較してデータ損失のリスクが高くなります。
    • 特定のオフセットを使用した手動の謝辞:特定のオフセットのみがコミットされるため、パフォーマンスは一般に同期コミットよりも優れています。 このオプションは、スループットと信頼性の良いバランスを提供します。 実際のパフォーマンスは、個々のメッセージの障害の頻度に依存します。
    • どのkafkaメッセージ承認オプションが私のアプリケーションの特定のニーズと信頼性の要件に最適ですか?データ損失が許容され、スループットが高くなるアプリケーションの場合、
      • の場合(例:ロギング、メトリック):自動謝辞は適切な選択です。パフォーマンスの制限があります。適切なエラー処理または特定のオフセットを使用した手動の承認を使用した手動非同期承認は、良い妥協を提供します。 障害のあるメッセージ処理を処理するために再試行メカニズムを使用することを検討してください。
      • 時折のメッセージ処理障害があるアプリケーションの場合:
      • 特定のオフセットを使用した手動の承認は、選択的な承認を可能にし、パフォーマンスを最適化しながら信頼性を確保します。 スループットと信頼性の間のトレードオフを慎重に検討して、あなたのニーズを最もよく満たすオプションを選択してください。

以上がKafkaメッセージ承認オプションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。