我有一个kafka流应用程序,其中正在使用stateStore(由RocksDB支持)。
所有流线程正在做的是从kafka主题获取数据并将数据放入状态存储。 (还有其他线程从状态存储读取数据并进行业务逻辑处理。)
由于stateStore,我观察到它创建了一个新的kafka主题“ changelog”。
但是我没有明白“ changelog” kafka主题的作用是什么?
答案 0 :(得分:3)
这个问题的简短答案是实现容错。
详细信息:
changelog
使Kafka Streams应用程序中的状态存储具有容错能力。当您的应用程序将更多数据吸收到状态存储中时,它会被推送到changelog
主题,因此,如果正在运行该应用程序的节点发生故障,那么changelog
主题将用于加载状态以最新状态存储。
每个应用程序线程或实例都有其自己的changelog
主题分区,以便每个实例在失败后重新启动应用程序后都可以重新创建其状态。
当状态存储进行更新时,Kafka Streams会将数据自动推送到主题。
我建议您仔细阅读《 Kafka权威指南》的第11章,其中包含有关Kafka Streams体系结构和流处理模式的很好的解释。
希望这会有所帮助。