【问题标题】:KafkaStreams application reprocessing from start after broker failures代理失败后从头开始重新处理 KafkaStreams 应用程序
【发布时间】:2018-06-15 11:22:23
【问题描述】:

我有一个 3-broker Docker Kafka AWS 集群和一个 3-container KafkaStreams 应用程序处理来自具有复制 = 2 的“事件”主题。

我在this question 中遇到了其他用户写的失败,后来让我创建了this question。停止 KafkaStreams 应用程序后,我重新启动了失败的代理,一个在星期五(大约需要一个小时),另一个在下星期一重新启动。

当代理加入集群时显然没问题(显示“失败,我重新启动了应用程序。 __customer_offsets.sh 复制=3,所以它们应该是安全的。

(作为参考,集群情况在this question 中有更好的描述)。

我的应用程序进行了一些调度,因此输出主题偏移的总和应该等于原始事件的总和)。无论什么不存在,它都会以一种包罗万象的方式转到errors 主题,因此它们总是匹配的。

但是,当重新启动时,应用程序从头开始处理,处理的消息数量几乎翻了一番(当失败发生时,有一些未处理的延迟)。

如果__consumer_offsets 没有丢失(而且它们显然没有丢失——它们只是显示复制不足,但在整个过程中都存在于代理中),为什么应用程序会从零开始处理?在什么情况下会出现这种情况——或者可能会发生这种情况?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    Kafka 在保留一段时间后删除偏移量——默认为 24​​ 小时。因此,如果您没有更改配置,则在重新启动时代理会检测旧的偏移量并将其删除。

    在即将发布的 2.0 版本中默认增加到 7 天:https://cwiki.apache.org/confluence/display/KAFKA/KIP-186%3A+Increase+offsets+retention+default+to+7+days

    还比较:https://cwiki.apache.org/confluence/display/KAFKA/KIP-211%3A+Revise+Expiration+Semantics+of+Consumer+Group+Offsets

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2011-07-11
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多