消费者的分区分配策略
消费者是存在于消费者组的,如果一个消费者组中包含有多个消费者,那么消费者组内的消费者如何进行分区分配呢?
kafka有四种分区分配策略,
RoundRobinAssignor,该分区策略是对于所有的分区和组内所有的消费者进行轮询分配,例如,有两个消费者C0,C1和两个主题T0,T1,且每个主题存在三个分区t0p0,t0p1,t0p2,t1p0,t1p1,t1p2,分区分配结果是
C0: [t0p0, t0p2, t1p1]
C1: [t0p1, t1p0, t1p2]
但是如果消费者组内的消费者所订阅的主题并不相同的话,就会出现问题
RangeAssignor,面向topic
CooperativeStickyAssignor
StickyAssignor
在consumer.properties使用
1 | class org.apache.kafka.clients.consumer.RangeAssignor = |
进行配置,默认使用的是RangeAssignor