Kafka消费者分区分配策略

当有多个消费者和多个分区时, 该如何分配它们?配置项partition.assignment.strategy决定了分配策略。

range (默认)


配置为org.apache.kafka.clients.consumer.RangeAssignor
对于每一个Topic, 计算PartitionNum/ConsumerNum, 结果为每个消费者所分配的分区数, 若有余数, 则前几个消费者会多一个分区。

比如有连个消费者c0和c1, 两个topic:t0和t1,每个Topic有3个Partition:p1,p2,p3, 那么分配结果为:
c0: t0p0,t0p1,t1p0,t1p1
c1: t0p2,t1p2

缺点也很明显, 当有多个Topic时, 不能做到很好的平均分配, 前面的consumer会被分配到更多的Partition

range robin


配置为org.apache.kafka.clients.consumer.RoundRobinAssignor

采用轮询的方式, 当所有Topic的Partition数相同时, 可以平均分配。
但是如果多个Topic的Partition数不相同时, 可能会导致分配极不平均。

转载于:https://my.oschina.net/dreamness/blog/3094161

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值