直到最近,我还认为生产者、领导人选举和元数据的过程是这样的:
然而,我观察到的是,生产者在耗尽重试之后阻塞,在元数据“自动”刷新之前什么也不做。此刷新将基于在此属性中配置的时间(来自Apache的Kafka文档):
metadata.max.age.ms:--一段以毫秒为单位的时间,在此之后,我们强制刷新元数据,即使我们还没有看到任何分区领导的更改,以主动发现任何新的代理或分区。
因此,基本上,如果生产者碰巧在元数据过期的时间附近阻塞,那么生产就会迅速恢复。但是,如果生产者在最后一次自动刷新发生后几秒钟阻塞,考虑到该属性的默认设置为5分钟,则生成器几乎会一直被阻塞。
有什么东西我漏掉了还是没有正确理解?
谢谢。
发布于 2018-05-29 06:27:10
我也经历过同样的经历。我唯一理解的是,您必须小心处理metadata.max.age.ms属性。如果您的数据处理非常关键,并且您不希望由于没有发生领导选择而丢失您的消息,请尽量保持较低的metadata.max.age.ms property。但这将增加元数据更新的开销。
https://stackoverflow.com/questions/39290693
复制相似问题