从v0.8.2滚动更新kafka消费者 - > 0.10.2

时间:2017-08-25 20:35:15

标签: apache-kafka kafka-consumer-api

我们有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消费者?

1 个答案:

答案 0 :(得分:0)

我建议你做两件事。

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

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

  3. 然而,消费者群体的协调方式不同(在旧版本中,无论您在哪里提交抵消,它们都会在Zookeeper中进行协调),因此在某些时候您需要停止所有旧的消费者并启动新的API实施。首先迁移你的补偿应该使这个停机时间非常短,没有数据丢失,无论是什么时候关闭所有消费者和启动新的消费者。