Kafkaの再試行メカニズムと確認メカニズム

Kafkaの再試行機能とは、メッセージの送信中に送信に失敗したり異常が発生した場合、Kafkaが自動的にメッセージの再送信を試みることです。再試行機能の目的は、メッセージをターゲットのトピックに確実に送信できるようにすることです。

Kafkaのリトライメカニズムは2つの側面を備えています。

  1. プロデューサー端での再試行: プロデューサーがメッセージを送信中にネットワーク障害またはブローカーの利用不可などの異常が発生すると、プロデューサーは自動的にメッセージの再送信を試み、正常に送信されるか最大試行回数に達するまで再送信を行います。
  2. コンシューマ側の再試行: コンシューマがメッセージを消費する際、メッセージ処理中に異常が発生した場合、コンシューマはメッセージを再消費するかどうかを選択できます。コンシューマの設定パラメータを調整することで、最大再試行回数と再試行間隔を設定できます。

Producerはメッセージを送信後、Brokerからの確認応答を待ってから次のメッセージを送信します。これは、メッセージの信頼性と一貫性を確保することを目的としています。

KafkaのAck機制には3つのモードがあります。

  1. acks=0: 送信後即次のメッセージの送信に移るため、ブローカーへ送信完了の確認を待たないモード。このモードでは、メッセージがブローカーに正しく書き込まれたかProducer側では把握できないため、メッセージが失われる可能性が生じる。
  2. Producerがメッセージを送信したら、リーダーレプリカがメッセージを正常に書き込み、確認フィードバックを送信するまで待機する必要があります。このモードでは、リーダーレプリカがメッセージの受信を確認しただけで、Producerはメッセージが正常に送信されたと見なします。
  3. プロデューサーは、メッセージを送信した後にすべての ISR (In-Sync Replica) レプリカがメッセージの書き込みに成功し承認フィードバックを送信するまで待つ必要があります。このモードでは、メッセージの信頼性は最高ですが、遅延時間が長くなります。

ackパラメータを調整することで、信頼性とパフォーマンスのトレードオフを図ることができます。

bannerAds