kafka 不同topic 相同groupid ,会造成rebalance

在反复的调试过程中,我意识到这两个consumer反复重新加入group中,而他们的group是同一个,猜测是两个consumer使用同一个groupid导致,相互影响。在分别为两个consumer指定了单独的groupid之后,异常的情况没有再出现。

基于这种现象,查询了一些资料,在一篇blog中找到了比较详细的讲解

https://olnrao.wordpress.com/2015/05/15/apache-kafka-case-of-mysterious-rebalances/

文章中提到,消费者在zookeeper中注册中,消费者注册标识符(Consumer Identifiers Registry)是保存在zookeeper的/consumers/[group_id]/ids/[consumer_connector_id]的路径下,这些消费者注册节点形成一棵树,当有消费者加入或离开时,树上所有的消费者都会被通知到,从而进行rebanlance。

消费者在zookeeper注册的路径与topic并没有关系,反而与groupid绑定,这是因为同一个consumer可以消费不同的topic。如果不同的consumer使用同一个groupid消费不同的topic,而任何一个topic的consumer出现加入或离开等变化时,所有groupid组里的consumer都会发生rebanlance。从而可能导致上面调试时出现的问题。

所以kafka 不同的consumer需要使用不同的group id,以减小相互之间的影响。