天天看点

Kafka Consumer均衡策略,消费者对应消费哪个分区

Kafka Consumer均衡算法

  • 如下图,有一个topic,这个tpoic的partition和他们所在的broker的图如下
    Kafka Consumer均衡策略,消费者对应消费哪个分区
  • broker有两个 broker1 broker2
  • 总共有四个分区,按照哈希取模算法分配
  • 同一个消费者组中有6个消费者

同一个消费者组中的消费者分别消费哪个分区?

均衡算法

1.A=(partition数量/同分组消费者总个数) 
2.M=对上面所得到的A值小数点向上取整
3.计算出该消费者拉取数据的patition合集:Ci = [P(M*i ),P((i + 1) * M -1)]
           
A=4/6
M=A向上取整==>1
C0=[P(1*0),P((0+1)*1-1)]==>[P0,P0]
C1=[P(1*1),P((1+1)*1-1)]==>[P1,P1]
C2=[P(1*2),P((2+1)*1-1)]==>[P2,P2]
C3=[P(1*3),P((3+1)*1-1)]==>[P3,P3]
C4=[P(1*4),P((4+1)*1-1)]==>[P4,P4]
C5=[P(1*5),P((5+1)*1-1)]==>[P5,P5]
这样的话,C4,C5这两个消费者就会被闲置,相当于占用资源
如下图所示
           
Kafka Consumer均衡策略,消费者对应消费哪个分区

如果消费者组里面的消费者少于partitionNum

  • 例如有3个消费者
那么:
A=4/3
M=A向上取整==>2
C0=[P(2*0),P((0+1)*2-1)]==>[P0,P1]
C1=[P(2*1),P((1+1)*2-1)]==>[P2,P3]
C2=[P(2*2),P((2+1)*2-1)]==>[P4,P5]
这样C2会被闲置
如下图
           
Kafka Consumer均衡策略,消费者对应消费哪个分区

总结:

  • 如果kafka消费者组需要增加消费者,最多增加到和partition数量一致,超过的消费者只会占用资源,不会起作用

    afka消费者组需要增加消费者,最多增加到和partition数量一致,超过的消费者只会占用资源,不会起作用

  • 如果kafka的partition数量大于消费者组消费者的个数,partition的个数一定要是消费者组中消费者个数的整数倍,不然有些消费者会占用资源不起作用