kafka流中stattore和changelog主题的用途?

问题描述 投票:0回答:1

我有一个kafka流应用,其中使用stateStore(由RocksDB支持)。

流线程所做的就是从kafka主题中获取数据,然后把数据放到statestore中。(还有其他线程从statestore中读取数据并进行业务逻辑处理)。

我观察到它因为stateStore创建了一个新的kafka主题 "changelog"。

但我不明白 "changelog "这个kafka主题有什么作用?

  • 为什么需要它(changelog)?
  • stateStore和 "changelog "kafka主题之间是什么关系?
  • 谁把数据放到这个topic里?("changelog")
apache-kafka apache-kafka-streams
1个回答
3
投票

这个问题的简答是实现容错。

详细介绍:

changelog 使您的Kafka Streams应用程序中的状态存储能够容错。当您的应用程序向状态存储中摄入更多的数据时,这些数据会被推送至 changelog 主题,所以如果运行应用程序的节点宕机,那么该节点的 changelog 主题用于加载状态存储与最新状态。

每个应用程序线程或实例都会得到它自己的 changelog 主题分区,这样每个实例都可以在应用失败后重启后重新创建它的状态。

当状态存储有更新时,数据会被Kafka流自动推送到主题上。

我建议你去看一下Kafka Definitive Guide的第11章--它包含了对Kafka Streams架构和流处理模式的相当好的解释。

希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.