kafka的partition与costomer的关系

摘自官网:

每个partition仅由同一个消费者组中的一个消费者消费到。并确保消费者是该partition的唯一消费者,并按顺序消费数据。每个topic有多个分区,则需要对多个消费者做负载均衡,但请注意, 相同的消费者组中不能有比分区更多的消费者,否则多出的消费者一直处于空等待,不会收到消息

 
1、同组消费者数量大于partition

 当同一组中的消费者数量大于partition,则必然有一些消费者空闲。也就是说如果只有一个partition你在同一组启动多少个   consumer都没用,partition的数量决定了此topic在同一组中被可被均衡的程度

2、 同组消费者数量小于和等于partition

用图表示为:

 
消费者数量2小于partition的数量3,此时,向test2发送消息1,2,3,4,5,6,7,8,9
C1接收到1,3,4,6,7,9
C2接收到2,5,8
此时P1、P2对对应C1,即多个partition对应一个消费者,C1接收到消息量是C2的两倍
然后,在g3组中再启动一个消费者,使得消费者数量为3等于topic2中partition的数量
    增加一个C3后可以保证全部的消息均衡消费在3个C中
 
3、多组消费者消费问题
 

用图表示为

如上图,向test2发送消息1,2,3,4,5,6,7,8,9
那么g3组各个消费者及g4组的消费者接收到的消息是怎样地呢?
答案:
消息被g3组的消费者均分,g4组的消费者在接收到了所有的消息。
g3组:
C1接收到了:2,5,8
C2接收到了:3,6,9
C3接收到了:1,4,7
g4组:
C1接收到了:1,2,3,4,5,6,7,8,9
启动多个组,则会使同一个消息被消费多次

猜你喜欢

转载自934739342.iteye.com/blog/2404787