99网
您的当前位置:首页Kafka分区策略

Kafka分区策略

来源:99网

分区的分配以及再平衡

默认策略是 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分区

可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前, 考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。
首先会尽量均衡的放置分区 到消费者上面,在出现同一消费者组内消费者出现问题的时候,会尽量保持原有分配的分 区不变化

因篇幅问题不能全部显示,请点此查看更多更全内容