【问题标题】:Rolling update of kafka consumers from v0.8.2 -> 0.10.2从 v0.8.2 -> 0.10.2 滚动更新 kafka 消费者
【发布时间】:2017-08-25 20:35:14
【问题描述】:

我们有 v0.8.2 消费者,我们正在更新到 v0.10.2。这些是大容量应用程序,因此我们通常会进行滚动更新。问题是 v8 消费者向 zookeeper 提交偏移量,而 v10 消费者向 kafka 提交。在我们的测试中,尝试混合运行 v8 和 v10 消费者会导致消息被双重消费。在此处查看有关问题的更详细说明:http://www.search-hadoop.com/m/Kafka/uyzND1ymwxk17UWdj?subj=Re+kafka+0+10+offset+storage+on+zookeeper

有没有人找到解决方法,以便我们可以在不中断的情况下从 v8 更新到 v10 消费者?

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    这里有两件事我会建议。

    1. 分步进行版本升级和 API 升级。您可以滚动升级到 0.10 并继续使用旧的消费者 API 并将偏移量提交给 zookeeper。然后在第二步中更新您的 API。这将减少您每一步的活动部件数量。

    2. 在进行 API 更新时,您必须进行某种完全切换,因为正如您所观察到的,消费者组信息和偏移量现在将存储在 Kafka 中。你可以做的一件事就是在这里 https://kafka.apache.org/documentation/#offsetmigration

    但是,消费者组的协调方式不同(在旧版本中,无论您在哪里提交偏移,它们都在 Zookeeper 中进行协调),因此在某些时候您需要停止所有旧消费者并启动新的 API 实现.首先迁移您的偏移量应该会使其在没有数据丢失的情况下发生非常短的中断,就像关闭所有消费者并启动新消费者的持续时间一样。

    【讨论】:

    • 感谢偏移量迁移的指针。如果我们需要将 v10 客户端回滚到 v8,这可能会很有用。
    猜你喜欢
    • 2017-09-09
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2016-10-31
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多