我有一个kafka流应用程序,它在其中使用stateStore(由RocksDB支持(。
流线程所做的一切就是从kafka主题中获取数据,并将数据放入状态存储中。(还有其他线程从状态存储中读取数据并进行业务逻辑处理(。
我观察到,由于stateStore,它创建了一个新的kafka主题"changelog"。
但我不明白"变更日志"卡夫卡主题有什么用?
- 为什么需要它(变更日志(
- statestore和"changelog"kafka主题之间的关系是什么
- 谁将数据放入此主题?("变更日志"(
这个问题的简单答案是实现容错。
详细信息:
changelog
使您的Kafka Streams应用程序中的State Store具有容错性。当应用程序将更多数据摄入状态存储时,它会被推送到changelog
主题,因此,如果运行应用程序的节点出现故障,则使用changelog
主题加载具有最新状态的状态存储。
每个应用程序线程或实例都有自己的changelog
主题分区,这样每个实例都可以在应用程序失败后重新启动后重新创建其状态。
当对状态存储进行更新时,Kafka Streams会自动将数据推送到主题中。
我建议阅读Kafka最终指南的第11章,其中包含了对Kafka Streams架构和流处理模式的非常好的解释。
希望这能有所帮助。