在我的开发环境中,我的Kafka使用者组在增加订阅主题的分区计数后,会重新平衡分区并将分区分配给使用者示例。
然而,当我们将产品部署到kubernetes环境中时,我们没有看到在增加主题的分区计数后使用者组重新平衡。Kafka认识到了这种增加,这可以从服务器日志或命令行中描述主题中看到。然而,使用者组不会重新平衡和识别新的分区。根据我的本地测试,Kafka尊重metadata.max.age.ms(默认为5分钟)。但是在kubernetes中,组永远不会重新平衡。
我不知道这是否会影响到什么,但我们使用的是静态成员。
消费者是用Java编写的,使用标准的Kafka Java库。没有消息流经Kafka,添加消息也没有帮助。我没有看到服务器或消费者配置与我的开发环境不同的任何特殊之处。有人知道任何可能影响此行为的配置吗?
1条答案
按热度按时间mklgxw1f1#
Kafka默认只在5分钟后更新主题元数据,因此不会立即检测分区更改,正如您所注意到的。应用的部署方法应该无关紧要,只要网络请求能够正确到达代理。
另外,检查一下你的分区分配策略,看看它是否使用了粘性分配,这取决于你使用的客户机版本,因为默认值在2.7左右改变了
Kafka没有传达任何信息
如果新分区上没有数据,则真实的上不需要重新平衡以使用它们