在我的设置中,我有一个可以从Kafka使用的三个进程(3个服务实例)的使用者组。我发现正在讨厌的是第一个节点正在接收所有流量。如果手动终止一个节点,则下一个节点将获取所有Kafka流量,但最后一个节点处于空闲状态。
所需的行为是所有消息均匀地分布在消费者组中的所有实例上,这是我认为应该发生的。据我所知,Kafka的工作方式是它应该在消费者群体的所有成员之间平均分配消息。我的理解是否正确?我一直试图确定为什么只有一个消费者群体成员才能获得所有流量而没有运气。有什么想法/建议吗?
答案 0 :(得分:5)
您需要确保主题具有多个分区才能并行使用它。消费者组中的消费者从代理获取一个或多个分配的分区,但是除非消费者脱机,否则永远不会在同一组内的多个消费者之间共享单个分区。主题所具有的分区数等于可以从主题提供的使用者组中的最大使用者数。