web-dev-qa-db-ja.com

Kafka10.1 heartbeat.interval.ms、session.timeout.msおよびmax.poll.interval.ms

kafka 0.10.1.1を使用しており、次の3つのプロパティと混同しています。

heartbeat.interval.ms
session.timeout.ms
max.poll.interval.ms

heartbeat.interval.ms-これは0.10.1で追加され、ポーリング間でハートビートを送信します。 session.timeout.ms-これは、kafkaへの要求がなく、ポーリングごとにリセットされる場合にリバランスを開始します。max.poll.interval。 ms-これはアンケート全体です。

しかし、いつkafkaがリバランスを開始しますか?なぜこれら3つが必要なのですか?すべてのデフォルト値は何ですか?

ありがとう

21
user1578872

Kafka 0.10.1.0以上で、各コンシューマインスタンスが機能するために2つのスレッドを使用している場合を想定しています。1つはpollが呼び出されるユーザースレッド、もう1つはハートビートスレッドですハートビートを特別に処理します。

session.timeout.msはハートビートスレッド用です。この時間間隔が経過する前にコーディネーターがコンシューマーからハートビートを取得できない場合、コーディネーターはコンシューマーを失敗としてマークし、新しいラウンドのリバランスをトリガーします。

max.poll.interval.msはユーザースレッド用です。メッセージ処理ロジックが重すぎてこの時間間隔よりも費用がかかる場合、コーディネーターは明示的にコンシューマーをグループから離脱させ、新しいラウンドのリバランスをトリガーします。

heartbeat.interval.msは、他の健康な消費者にリバランスをより速く認識させるために使用されます。コーディネーターがリバランスをトリガーした場合、他のコンシューマーは、REBALANCE_IN_PROGRESSカプセル化された例外。ハートビートリクエストがより速く送信されると、消費者はグループに再参加する必要があることを早く認識します。

推奨値:
session.timeout.ms:比較的低い値、たとえば10秒。
max.poll.interval.ms:処理要件に基づいて
heartbeat.interval.ms:比較的低い値、session.timeout.ms

29
amethystic

より明確にするだけで、ハートビートスレッド(同じプロセスでPoll関数を呼び出すユーザースレッドと共に)は、「heartbeat.interval.ms」時間ごとにコーディネーターにハートビートを送信し、コーディネーターはコンシューマーをマークします。 「session.timeout.ms」または「max.poll.interval.ms」を超える場合、デッドとしてユーザースレッドで。

1
suiyuan2009