Kafka分区分配策略

 Kafka内部存在两种默认的分区分配策略:Range RoundRobin

Range是默认策略。Range是对每个Topic而言的(即一个Topic一个Topic分),首先对同一个Topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。然后用Partitions分区的个数除以消费者线程的总数来决定每个消费者线程消费几个分区。如果除不尽,那么前面几个消费者线程将会多消费一个分区。

例如:我们有10个分区,两个消费者(C1C2),3个消费者线程,10 / 3 = 3而且除不尽。

C1-0将消费0, 1, 2, 3分区

C2-0将消费4, 5, 6分区

C2-1将消费7, 8, 9分区

第一步:将所有主题分区组成TopicAndPartition列表,然后对TopicAndPartition列表按照hashCode进行排序,最后按照轮询的方式发给每一个消费线程。

粘性分区,大体和RoundRobin相同,只在有broker宕机时,优先保留原先已经有的分区


版权声明:本文为cvwarrior_wutu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。