Apache kafka 卡夫卡流KTable changelog TTL
假设我将Apache kafka 卡夫卡流KTable changelog TTL,apache-kafka,apache-kafka-streams,rocksdb,Apache Kafka,Apache Kafka Streams,Rocksdb,假设我将A-EventKStream聚合为A-SnapshotKTable,将B-EventKStream聚合为B-SnapshotKTable。A-Snapshot和B-Snapshot都不传递空值(删除事件聚合为快照的状态属性)。此时,我们可以假设对于a-KTable和B-KTable聚合,我们有一个持久化的kafka变更日志主题和一个rocksDB本地存储。然后,我的拓扑将A-KTable与B-KTable连接起来,生成一个连接的AB-KStream。也就是说,我的问题在于A-KTable
A-Event
KStream聚合为A-Snapshot
KTable,将B-Event
KStream聚合为B-Snapshot
KTable。A-Snapshot
和B-Snapshot
都不传递空值(删除事件聚合为快照的状态属性)。此时,我们可以假设对于a-KTable
和B-KTable
聚合,我们有一个持久化的kafka变更日志主题和一个rocksDB本地存储。然后,我的拓扑将A-KTable
与B-KTable
连接起来,生成一个连接的AB-KStream
。也就是说,我的问题在于A-KTable
和B-KTable
物化生命周期(变更日志主题和本地rocksdb存储)。假设A-Event
主题和B-Event
主题保留策略设置为2周,是否有办法将kafka内部KTable物化主题保留策略(changelog和rocksDB)与上游事件主题删除保留策略产生副作用?否则,我们是否可以使用某种保留策略来配置KTable物化,以管理changelog主题和rockdb存储生命周期?考虑到我不能显式地发出A-KTable
和B-KTable
快照墓碑?我担心changelog和本地存储将无限增长,…,目前,KStream不支持开箱即用的功能,无法根据源主题保留策略将清理注入changelog主题。默认情况下,它使用“压缩”保留策略
同样,还有一个公开的JIRA问题:
一个选项是注入墓碑消息,但这不是一个好方法。对于窗口存储,您可以使用“压缩,删除”保留策略。目前,KStream不支持开箱即用的功能,无法根据源主题保留策略将清理注入Changelog主题。默认情况下,它使用“压缩”保留策略 同样,还有一个公开的JIRA问题: 一个选项是注入墓碑消息,但这不是一个好方法。
对于窗口存储,您可以使用“压缩、删除”保留策略