[解決済み] Kafka >= 0.10.1 における session.timeout.ms と max.poll.interval.ms の差分について
質問
なぜ両方が必要なのか不明です。
session.timeout.ms
と
max.poll.interval.ms
のどちらを使用するのでしょうか、またその両方を使用するのはどのような場合でしょうか。両方の設定は、コーディネーターがコンシューマーが死んだと判断する前にハートビートを取得するために待機する時間の上限を示すように思われます。
に基づくバージョン 0.10.1.0+ では、どのように動作するのでしょうか。 KIP-62 ?
どのように解決するのですか?
KIP-62以前は
session.timeout.ms
(つまり、Kafka
0.10.0
およびそれ以前)。
max.poll.interval.ms
が導入されるのは
KIP-62
(カフカの一部
0.10.1
).
KIP-62では、ハートビートを呼び出しから切り離し
poll()
の呼び出しからハートビートを切り離し、バックグラウンドのハートビートスレッドを経由して、より長い処理時間(つまり、連続した2つの
poll()
の間の時間)をハートビート間隔より長くすることができます。
メッセージの処理に1分かかると仮定します。ハートビートとポールが連動している場合 (つまり、KIP-62以前) は、ハートビートとポールの間に
session.timeout.ms
を 1 分より大きくして、コンシューマがタイムアウトしないようにする必要があります。しかし、コンシューマが死んだ場合、失敗したコンシューマを検出するのにも1分以上かかります。
KIP-62では、ポーリングとハートビートを分離し、連続する2つのポーリングの間にハートビートを送信できるようにしました。このとき、2つのスレッド、ハートビートスレッドと
処理スレッド
であり、そのためKIP-62ではそれぞれにタイムアウトを導入しています。
session.timeout.ms
がハートビートスレッド用であるのに対し
max.poll.interval.ms
は処理スレッド用です。
を設定したとします。
session.timeout.ms=30000
を設定したとします。したがって、コンシューマのハートビートスレッドはこの時間が経過する前にブローカにハートビートを送信する必要があります。一方、1つのメッセージの処理に1分かかる場合は
max.poll.interval.ms
を 1 分より大きく設定し、処理スレッドにメッセージの処理時間を与えることができます。
処理スレッドが死んだ場合、そのスレッドに
max.poll.interval.ms
を要します。しかし、コンシューマ全体が死んだ場合 (処理スレッドが死ぬと、ハートビートスレッドを含むコンシューマ全体がクラッシュする可能性が高い)、 これを検出するために必要なのは
session.timeout.ms
で検出できます。
このアイデアは、処理自体にかなりの時間がかかっても、故障したコンシューマを素早く検出できるようにすることです。
実装の詳細
新しいタイムアウト
max.poll.interval.ms
は主にクライアント側の概念です: もし
poll()
の中で呼び出されない場合は
max.poll.interval.ms
の中で呼び出されなかった場合、ハートビートスレッドはこのケースを検出し、 ブローカーにグループからの離脱要求を送信します。--
max.poll.interval.ms
はコンシューマーグループのリバランスにまだ関連しています: もしリバランスがトリガーされた場合、コンシューマーは
max.poll.interval.ms
を呼び出してグループに再参加する時間があります。
poll()
を呼び出すことで、グループに再参加することができます。
関連
-
[解決済み] Kafkaメッセージにカスタムヘッダを追加する
-
[解決済み] kafkaとnifiの違い
-
[解決済み] kafkaのレプリケートパーティション下の修正
-
[解決済み] Kafkaのキー/バリューペアベースのメッセージングは何のためにあるのですか?[クローズド]
-
[解決済み] JAAS または Kafka の設定に serviceName が定義されていない (Kerberos ではない)
-
[解決済み] Zookeeperにアクセスせずに-zookeeperフラグを使用してKafka 0.10トピックをすべて一覧表示する
-
[解決済み] Apache Kafkaのコンテキストで「Rebalancing」とはどういう意味ですか?
-
[解決済み】Kafkaトピックのパージ
-
[解決済み】Kafkaのトピックとパーティションを理解する
-
[解決済み] Kafkaでデータモデリング?トピックとパーティション
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] グループがリバランスしているため、ハートビートが失敗しました。
-
[解決済み] Kafkaメッセージにカスタムヘッダを追加する
-
[解決済み] kafkaとnifiの違い
-
[解決済み] kafkaのレプリケートパーティション下の修正
-
[解決済み] Kafkaのキー/バリューペアベースのメッセージングは何のためにあるのですか?[クローズド]
-
[解決済み] HDFスキーマレジストリとConfluentの主な違いは何ですか?
-
[解決済み] JAAS または Kafka の設定に serviceName が定義されていない (Kerberos ではない)
-
[解決済み] Zookeeperにアクセスせずに-zookeeperフラグを使用してKafka 0.10トピックをすべて一覧表示する
-
[解決済み] KafkaよりRabbitMQを使うべきタイミングは?[クローズド]
-
[解決済み] カフカ コンシューマーAPIとストリームAPI