producer:leader崩溃时的元数据刷新

qpgpyjmq  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(309)

直到最近,我还以为制片人、领导人选举和元数据的过程是这样的:
生产商发布给一个领先的经纪人,这是下跌,这将失败。
生产者尝试了几次(或零,取决于配置)。
最终,制作者将“失败”地发布那个消息。
这将触发producer联系代理获取一个新的元数据块,这样它就可以找到新的leader并继续。
然而,我观察到的是生产者阻塞后,用尽重试,不做任何事,直到元数据刷新“自动”。此刷新将基于此属性中配置的时间(来自apache的kafka文档):
metadata.max.age.ms:一段时间(以毫秒为单位),在这段时间之后,我们强制刷新元数据,即使我们没有看到任何分区领导层更改,也可以主动发现任何新的代理或分区。
因此,基本上,如果生产者恰好在元数据自身过期的时间附近阻塞,那么生产将很快恢复。但是,如果生产者在上一次自动刷新发生几秒钟后阻塞,考虑到属性的默认值是5分钟,生产者将几乎一直被阻塞。
有什么我不明白的地方吗?
谢谢。

t9aqgxwy

t9aqgxwy1#

我也经历过同样的经历。我唯一能理解的是你要小心 metadata.max.age.ms 财产。如果您的数据处理非常关键,并且您不想因为没有进行领导选择而丢失消息,请尝试保留 metadata.max.age.ms property 尽可能低。但这会增加元数据更新的开销。

相关问题