Kafka分区策略

分区的分配以及再平衡

默认策略是 Range + CooperativeSticky Kafka 可以同时使用
多个分区分配策略。

1.Range分区策略

Range 是对每个 topic 而言的。
首先对同一个 topic 里面的分区按照序号进行排序,并 对消费者按照字母顺序进行排序。
通过 partitions数/consumer数 来决定每个消费者应该 消费几个分区。如果除不尽,那么前面几个消费者将会多 消费 1 个分区。
例如, 7/3 = 2 1 ,除不尽,那么 消费者 C0 便会多 消费 1 个分区。 8/3=2 2 ,除不尽,那么 C0 C1分别多 消费一个。如果消费者1号挂了那么
1 号消费者:消费到 0、1、2、3 号分区数据。
2 号消费者:消费到 4、5、6 号分区数据。

2.RoundRobin分区策略

RoundRobin 轮询分区策略,是把所有的 partition 和所有的 consumer 都列出来,然后按照 hashcode 进行排序,最后 通过轮询算法来分配 partition 给到各个消费者。(假设都是七个分区,三个消费者)。
1号消费者:0,3,6
2号消费者:1,4
3号消费者:2,5
1号消费者挂掉再平衡之后
2号消费者:0,2,4,6
3号消费者:1,3,5

3.Sticky分区

可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前, 考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。
首先会尽量均衡的放置分区 到消费者上面,在出现同一消费者组内消费者出现问题的时候,会尽量保持原有分配的分 区不变化
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值