kafka 原理深度剖析系列|分区分配策略

在上一篇文章中,我们为大家详细介绍可 Kafka 的原理与核心概念,包括控制器选举及恢复、分区 leader 的选举等,本次我们来为大家详细讲解 Kafka 等分区分配策略,希望能对大家有所帮助

Kafka 提供了消费者客户端参数 partition.assignment.strategy⽤来设置消费者与订阅主题之间的分区分配策略。默认情况下此参数的值为:org.apache.kafka.clients.consumer.RangeAssignor,即采⽤ RangeAssignor 分配策略。除此之外,Kafka 中还提供了另外两种分配策略: RoundRobinAssignor 和 StickyAssignor。消费者客户端参数 partition.asssignment.strategy 可以配置多个分配策略,彼此之间以逗号分隔。

RangeAssignor 分配策略

RangeAssignor 策略的原理是按照消费者总数和分区总数进⾏整除运算来获得⼀个跨度,然后将分区按照跨度进⾏平均分配,以保证分区尽可能均匀地分配给所有的消费者。对于每⼀个 topic,

RangeAssignor 策略会将消费组内所有订阅这个 topic 的消费者按照名称的字典序排序,然后为每个消费者划分固定的分区范围,如果不够平均分配,那么字典序靠前的消费者会被多分配⼀个分区。

假设 n=分区数/消费者数量,m=分区数 %消费者数量,那么前 m 个消费者每个分配 n+1 个分区,后⾯的(消费者数量-m)个消费者每个分配 n 个分区。如果消费组内有 2 个消费者 C0 和 C1,且都订阅了主题 t0 和 t1,并且每个主题都有 4 个分区,那么所订阅的所 有分区可以标识为:t0p0、t0p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值