消费者分区分配策略

(1)Range范围分配

  • Range范围分配策略是kafka默认的分配策略,它可以确保每个消费者消费的分区数量是均衡的。需要注意的是range范围分配策略是针对每个topic的。
  • 配置消费者的partition.assignment.strategy为org.apache.kafka.clients.consumer.RangeAssignor。
  • 算法公式:n =分区数量/消费者数量,M=分区数量%消费者数量;前m个消费者消费n+1个,剩余消费者消费n个

(2)roundRobin轮询策略

  • RoundRobinAssignor轮询策略是将消费组内所有消费组以及消费者所订阅的所有topic的partition按照字典顺序(topic和分区的hashcode进行排序),然后通过轮询的方式逐个将分区以此分配给每个消费者。
  • 配置消费者的partition.assignment.strategy为org.apache.kafka.clients.consumer.RoundRobinAssignor

(3)stricky粘性分配策略

  • 从kafka 0.11.x开始,引入此类分配策略,目的是分区尽可能均匀,在发生Rebalance的时候,分区的分配尽量和上一次分配保持相同。
  • 没有发生Rebalance时,stricky粘性分配策略和RoundRobin分配策略类似。
posted @ 2021-07-25 22:33  Eleanor123  阅读(138)  评论(0编辑  收藏  举报