制作人:领导者失败时的元数据刷新

时间:2016-09-02 10:56:02

标签: apache-kafka

直到最近,我认为制作人,领导者选举和元数据的过程是这样的:

  1. 制作人发布给失败的领导经纪人,这将失败。
  2. 制作人尝试了几次(或零,取决于配置)。
  3. 最终制作人将“失败”发布该消息。
  4. 这会触发Producer联系经纪人以获取新的元数据块,这样它就可以找到新的领导者并继续。
  5. 然而,我观察到的是生产者在耗尽重试之后阻塞,并且在元数据“自动”刷新之前没有做任何事情。此刷新将基于此属性中配置的时间(来自Apache的Kafka文档):

    metadata.max.age.ms :我们强制刷新元数据的时间段(以毫秒为单位),即使我们没有看到任何分区领导层更改以主动发现任何新的代理或分区。

    基本上,如果生产者碰巧在元数据自身到期的时间附近阻塞,那么生产将很快恢复。但是,如果生成器在最后一次自动刷新发生后几秒钟阻塞,考虑到该属性的默认值为5分钟,生产者将在几乎所有时间被阻止。

    我有什么遗漏或没有正确理解吗?

    感谢。

1 个答案:

答案 0 :(得分:0)

我也经历过同样的事情。我唯一理解的是你必须小心metadata.max.age.ms属性。如果您的数据处理非常重要,并且您不希望因为没有发生领导者选择而丢失您的消息,请尽量保持metadata.max.age.ms property尽可能低。但它会增加元数据更新开销。