0%

消费者的分区分配策略

消费者的分区分配策略

消费者是存在于消费者组的,如果一个消费者组中包含有多个消费者,那么消费者组内的消费者如何进行分区分配呢?

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
partition.assignment.strategy=class org.apache.kafka.clients.consumer.RangeAssignor

进行配置,默认使用的是RangeAssignor