2016-10-30 7 views
3

私は、カフカにある特定のトピックに対して10個のパーティションがあるとします。 これらの10のパーティションをコンシューマ間で自動的にロードバランスする方法は何ですか?カフカのコンシューマを調整する

私はこのポストhttps://stackoverflow.com/a/28580363/317384を読んだが、私はそれが私が探しているものをカバーしていないか、あるいは私はちょうどそれを取得していない。

パーティションごとに1つのコンシューマを持つワーカーをスピンアップすると、そのワーカーはすべての仕事を消費します。

しかし、同じワーカーの別のインスタンスを別の場所にスピンアップするとどうなりますか? クライアントライブラリ/ Kafkaはこれを何らかの形で検出し、2人のワーカー間の負荷を再調整するので、worker1上のアクティブなコンシューマの一部がアイドル状態になり、worker2上の同じコンシューマがアクティブになりますか?

私は、必要に応じてワーカーを追加したり削除したりして、その間に負荷を分散できるようにしたいと考えています。

このから :これまで enter image description here

enter image description here

答えて

6

カフカの消費者は、消費者団体の一部です。グループには1つ以上のコンシューマーが含まれています。各パーティションは1つのコンシューマに割り当てられます。そしてパーティションは、カフカのスケールアウト方法です。パーティションより多くのコンシューマがある場合、コンシューマの一部はアイドル状態になります。コンシューマより多くのパーティションがある場合、複数のパーティションが単一のコンシューマに割り当てられる可能性があります。

新しいコンシューマが参加すると、再調整が行われ、以前に他のコンシューマに割り当てられたパーティションが新しいコンシューマに割り当てられます。あなたのケースでは、1つのコンシューマが10個のパーティションをすべて消費し、別のコンシューマが参加した場合、リバランスが行われ、その後はコンシューマあたり5つのパーティションが作成されます。

リバランスの間、消費者グループが「一時停止」していることは注目に値する。同様のことは、消費者が正常に離れるとき、またはリーダーが消費者が離れることを検出したときに起こります。

+0

コンシューマ・グループは、カフカ自体とは別のクライアント・ライブラリをサポートしていますか?私は彼らがここで言うことを完全には得ていません。https://github.com/Shopify/sarama/issues/410(私が使っているGo sdk) –

+0

これはすべて機能しています、これは完璧です! :-) –

+0

クール。消費者団体はカフカにとって非常に基本的なものです。クライアントも非常にスマートです - 彼らはそうすることによってサーバーからかなり離れています。私は外出先のクライアントについてよく分かりませんが、他のクライアントに従わない理由はありません。 – ashic

関連する問題