私はKafkaの新しいユーザーであり、現在2〜3週間試用しています。現時点ではKafka =ほとんどの部分で機能しますが、APIを自分のAPIに適合させようとした後Kafkaコンシューマー(これはわかりにくいですが、利用できるはずの新しいKafkaConsumerのガイドラインに従っています。 v 0.9、「トランク」リポジトリにあります)同じgroupIDを持つ複数のコンシューマーがある場合、トピックからのレイテンシーの問題が発生しました。
このセットアップでは、コンソールは一貫して「リバランストリガー」に関する問題を記録します。新しいコンシューマーをコンシューマーグループに追加するとリバランスが発生しますか?同じgroupIDのどのコンシューマーインスタンスがどのパーティションを取得するか、またはリバランスが他の何かに完全に使用されているかを把握するためにトリガーされますか?
https://cwiki.Apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design からもこの文章に出くわしましたが、理解できないようです。だから誰かが私がそれを理解するのを手伝うことができれば、それは大歓迎です:
リバランスは、(同じグループに属する)コンシューマーインスタンスのグループが、そのグループがサブスクライブしているトピックのパーティションの相互排他的なセットを調整するプロセスです。コンシューマーグループの正常なリバランス操作が終了すると、サブスクライブされたすべてのトピックのすべてのパーティションは、グループ内の単一のコンシューマーインスタンスによって所有されます。リバランスの仕組みは次のとおりです。すべてのブローカーは、消費者グループのサブセットのコーディネーターとして選出されます。グループのコーディネーターブローカーは、サブスクライブされたトピックのコンシューマーグループメンバーシップの変更またはパーティションの変更に関するリバランス操作を調整する責任があります。また、結果のパーティション所有権構成を、リバランス操作を実行しているグループのすべてのコンシューマーに伝達する役割も果たします。
新しいコンシューマがコンシューマグループに参加すると、コンシューマのセットは負荷を「再分散」して、各コンシューマにパーティションを割り当てようとします。この割り当てが行われている間にコンシューマーのセットが変更されると、リバランスは失敗して再試行されます。この設定は、あきらめるまでの最大試行回数を制御します。
このコマンドはrebalance.max.retriesで、デフォルトで4に設定されています。
また、次の条件に該当する場合に発生する可能性があります。
ZooKeeperセッションのタイムアウト。この期間に消費者がZooKeeperへのハートビートに失敗すると、消費者は死んでいると見なされ、リバランスが発生します。
お役に立てれば!
コンシューマグループ内のすべてのコンシューマには、1つ以上のトピックパーティションが排他的に割り当てられます。Rebalanceは、コンシューマ間のパーティション所有権の再割り当てです。
A リバランスは次の場合に発生します:
コンシューマグループに指定されたグループコーディネーター(クラスター内のブローカーの1つ)およびグループリーダー(グループに参加する最初のコンシューマ) 、リバランスは、次のように多少説明できます。
これはKafka 0.9に適用されますが、新しいバージョンがまだ有効であると確信しています。