技術共有

カフカプロデューサー

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

プロデューサー

プロデューサーはメッセージを作成して Kafka に配信する責任があります。
ここに画像の説明を挿入します

負荷分散

  1. 投票戦略。
  2. ランダム戦略。
  3. キーに従ってハッシュします。

Kafka のデフォルトのパーティション化戦略: キーが指定されている場合、同じキーを持つメッセージは同じパーティションに送信されます (パーティションは順序付けされています)。キーが指定されていない場合は、ポーリング戦略が使用されます。

メッセージを送ります

acks は、メッセージが正常に書き込まれたと判断する前に、プロデューサがメッセージを受信するために必要なパーティション レプリカの数を指定します。

3 つの方法に利点も欠点もありません。代わりに、地域の状況に応じて適切な戦略を選択する必要があります。パフォーマンスと信頼性の間にはトレードオフの関係があります。

メッセージを送信するには 3 つの方法があります。

送って忘れましょう。

ack = 0。
プロデューサは、メッセージの送信後にブローカからの応答を待ちません。ほとんどの場合、Kafka の可用性が高く、プロデューサーには自動的に再送信を試みるメカニズムがあるため、メッセージは正常に配信されます。ただし、再試行不可能なエラーまたはタイムアウトが発生した場合、メッセージは失われ、アプリケーションは情報や例外を受け取りません。
同じ構成環境では、acks を 0 に設定すると、最大のスループットを達成できます。

非同期で送信する

acks=1、デフォルト値。
プロデューサがメッセージを送信した後、パーティションのリーダー コピーがメッセージの書き込みに成功している限り、サーバーから成功の応答を受け取ります。

  • リーダー コピーがクラッシュして新しいリーダー コピーが再選択された場合など、メッセージをリーダー コピーに書き込むことができない場合、メッセージの損失を避けるために、プロデューサーはエラー応答を受け取ることになります。メッセージ。
  • メッセージがリーダー コピーに書き込まれ、成功した応答がプロデューサに返され、他のフォロワー コピーによってプルされる前にリーダー コピーがクラッシュした場合、この時点でもメッセージは失われます。これは、対応するメッセージが新しく選出されたリーダーのコピー。
    acks は 1 に設定されます。これは、メッセージの信頼性とスループットの間の妥協点です。
同期送信

acks = -1 または acks = all。
プロデューサはメッセージを送信した後、サーバーから正常な応答を受信する前に、ISR 内のすべてのレプリカがメッセージを正常に書き込むまで待機する必要があります。
同じ構成環境では、acks を -1 (すべて) に設定すると、最も高い信頼性を実現できます。ただし、これはメッセージが信頼できる必要があるという意味ではありません。ISR にはリーダー コピーしか存在しない可能性があり、acks=1 の状況に陥るからです。