我有一个kafka流应用,其中使用stateStore(由RocksDB支持)。
流线程所做的就是从kafka主题中获取数据,然后把数据放到statestore中。(还有其他线程从statestore中读取数据并进行业务逻辑处理)。
我观察到它因为stateStore创建了一个新的kafka主题 "changelog"。
但我不明白 "changelog "这个kafka主题有什么作用?
这个问题的简答是实现容错。
详细介绍:
changelog
使您的Kafka Streams应用程序中的状态存储能够容错。当您的应用程序向状态存储中摄入更多的数据时,这些数据会被推送至 changelog
主题,所以如果运行应用程序的节点宕机,那么该节点的 changelog
主题用于加载状态存储与最新状态。
每个应用程序线程或实例都会得到它自己的 changelog
主题分区,这样每个实例都可以在应用失败后重启后重新创建它的状态。
当状态存储有更新时,数据会被Kafka流自动推送到主题上。
我建议你去看一下Kafka Definitive Guide的第11章--它包含了对Kafka Streams架构和流处理模式的相当好的解释。
希望能帮到你。