Add a property partition.assignment.strategy.max.skew with default value 0.
When partition.assignment.strategy.max.skew = 0: the assignor behaves as it does currently, prioritising an even partition count across consumers over an even lag distribution.
When partition.assignment.strategy.max.skew > 0: the assignor prioritises an even total_lag distribution across consumers. To avoid starving some consumers of partitions or skewing the number of partitions per consumer too heavily, this mode should ensure:
Every consumer must be assigned at least 1 partition if there are sufficient partitions available.
Assignment within a topic is round-robin if lags are 0 on multiple partitions
The difference between number of partitions assigned to any two consumers must not exceed partition.assignment.strategy.max.skew.
Add a property
partition.assignment.strategy.max.skew
with default value 0.When
partition.assignment.strategy.max.skew = 0
: the assignor behaves as it does currently, prioritising an even partition count across consumers over an even lag distribution.When
partition.assignment.strategy.max.skew > 0
: the assignor prioritises an even total_lag distribution across consumers. To avoid starving some consumers of partitions or skewing the number of partitions per consumer too heavily, this mode should ensure:partition.assignment.strategy.max.skew
.