dkduckkit.dev

CooperativeStickyAssignor

Kafka

CooperativeStickyAssignor is Kafka's incremental rebalance partition assignor introduced in Kafka 2.4. Unlike the traditional Eager assignors that revoke all partitions during rebalances, CooperativeSticky only revokes partitions that need to move to new consumers. Partitions that can remain with their current consumer are not revoked, allowing continuous processing during rebalance events.

Why it matters in practice

For production systems with frequent scaling events (auto-scaling, rolling deployments), CooperativeSticky eliminates the stop-the-world pauses that plague Eager rebalances. A consumer group with 100 partitions that previously paused for 20-30 seconds during each rebalance can now continue processing 80-90% of partitions during the rebalance. This dramatically reduces consumer lag spikes and improves overall system reliability without requiring any application code changes.

Common mistakes

  • Not setting partition.assignment.strategy=CooperativeStickyAssignor explicitly — the default is still RangeAssignor in many configurations.
  • Having more consumers than partitions — idle consumers still participate in rebalances even with CooperativeSticky.
  • Not monitoring rebalance metrics after migration — CooperativeSticky should show reduced rebalance duration and fewer partition revocations.