2016-12-13 12 views
2

次のような効果を得たいです。 私は3つの作業者に9つのパーティションが広がっているとしましょう。それは次のようになります。私は何をしたいかApache Kafkaのrebalnce後のパーティションとコンシューマの場所

Before repartition

を、新しいマシンは、コンシューマ・グループに参加したときにということです。 これにより、新しいコンシューマが追加されます。私は、新しい消費者に可能な限り少ないパーティションを移動させるだけのリバランスを望みます。

ように: パーティション3 6 9が新しい消費者にどのように終わったかを見てください。 他のコンシューマは、既存のパーティションのほとんどを保持していました。

After repartition

これは可能ですか? 私がしたいことは、カフカの後ろにステートフルなシステムを構築することです。 私はすでに実行できますが、コンシューマが参加または離脱するときのデフォルトの動作は、すべてを切断して最初から再バランスを実行することです。 こうすることで、多くのパーティションを作成してコンシューマーを変更できます。 これは意味がありますか?

+0

既にこの機能の提案があります:https://cwiki.apache.org/confluence/display/KAFKA/KIP-54+-+Sticky+Partition+Assignment+Strategy –

答えて

3

現在のところ、カフカは最小限の影響力を持つリバランスまたは部分的なリバランスを行う機能をサポートしていません。ただし、o.a.k.clients.consumer.AbstractPartitionAssignorを拡張し、 'partition.assignment.strategy'をそのパスに設定する新しいクラスを作成することで、これを実現する独自のパーティショナロジックを実装することができます。

+1

この機能の提案は既にあります:https://cwiki.apache.org/confluence/display/KAFKA/KIP-54+-+Sticky+Partition+Assignment+Strategy –

+1

@ MatthiasJ.Saxからのコメントは、まさに私が後にしたものです:) –

関連する問題