scala - 生产中 kafka-streams 拓扑的演变

标签 scala apache-kafka apache-kafka-streams

我有一个复杂的拓扑,包括 KStreams、KTables、连接、重新生成 key 、过滤器、直通、分支、zip 等,以及输出主题上的实时客户端。

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

如何处理拓扑更改(添加新步骤、新输入-中间-输出主题),了解 kafka-streams 维护内部状态和更改日志,并遵守以下业务要求:

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

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

最佳答案

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

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

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

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

关于scala - 生产中 kafka-streams 拓扑的演变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745289/

相关文章:

java - 我们可以在全局状态存储恢复期间调用处理器吗?

java - kafka 崩溃后,偏移量丢失

scala:完成 Actor 的循环

scala - 为什么 Scala 程序的编译速度很慢?

scala - Promise.tryComplete中的参数指的是什么?

scala - 当我将对象放入值中时,scala Map 中出现编译时错误

python - 盒子里的卡夫卡 : unable to send messages from host

kotlin - KafkaStreams : Getting Window Final Results

apache-kafka - 为多个 Zookeeper 实例创建 Kafka 主题

java - 读取并处理来自 Kafka 的一批消息