卡夫卡流拓扑在生产中的演变

时间:2018-12-12 14:32:01

标签: scala apache-kafka apache-kafka-streams

我有一个复杂的拓扑,包括KStreams,KTables,联接,重命名,过滤器,直通,分支,zip等,其中包含有关输出主题的实时客户端。

所有输入,中间和输出主题都是基于avro的主题。

我如何处理拓扑更改(添加新步骤,新的input-intermidate-output主题),知道kafka-streams维护内部状态和更改日志,并满足以下业务要求:

  • 没有数据丢失
  • 在一定程度上没有数据重复
  • 无停机时间

答案是介于使用kafka-streams-application-reset或创建全新的消费者组(应用程序ID)之间的某个地方?

1 个答案:

答案 0 :(得分:2)

目前,Kafka Streams中没有检查点或保存点类型的概念。

如果您需要更新现有的应用程序,则可以安全地使用新的application.id或重置现有的application.id

在某些情况下,您需要根据拓扑的变化来定义新的application.id

https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Data+%28Re%29Processing+Scenarios