Kafka 流 KTable 变更日志 TTL
Kafka stream KTable changelog TTL
假设我有一个 A-Event
KStream 聚合到一个 A-Snapshot
KTable 和一个 B-Event
KStream 聚合到一个 B-Snapshot
KTable。 A-Snapshot
和 B-Snapshot
都不传递空值(删除事件被聚合为快照的状态属性)。在这一点上,我们可以假设我们有一个持久化的 kafka 变更日志主题和一个用于 A-KTable
和 B-KTable
聚合的 rocksDB 本地存储。然后,我的拓扑将连接 A-KTable
和 B-KTable
以生成连接的 AB-KStream
。也就是说,我的问题是 A-KTable
和 B-KTable
物化生命周期(变更日志主题和本地 rocksdb 存储)。假设 A-Event
主题和 B-Event
主题保留策略设置为 2 周,有没有办法通过上游事件主题删除保留对 kafka 内部 KTable 物化主题保留策略(变更日志和 rocksDB)产生副作用政策?否则,我们是否可以使用某种保留策略来配置 KTable 物化,以管理变更日志主题和 rockdb 存储生命周期?考虑到我无法显式发出 A-KTable
和 B-KTable
快照墓碑?我担心更新日志和本地商店会无限增长,..,
目前,KStream 不支持开箱即用的功能,即根据源主题保留策略在更新日志主题中注入清理。默认情况下,它使用 "Compact" 保留策略。
同样有一个未解决的 JIRA 问题:
https://issues.apache.org/jira/browse/KAFKA-4212
一种选择是注入逻辑删除消息,但这不是一个好方法。
如果是窗口存储,您可以使用 "compact, delete" 保留策略。
假设我有一个 A-Event
KStream 聚合到一个 A-Snapshot
KTable 和一个 B-Event
KStream 聚合到一个 B-Snapshot
KTable。 A-Snapshot
和 B-Snapshot
都不传递空值(删除事件被聚合为快照的状态属性)。在这一点上,我们可以假设我们有一个持久化的 kafka 变更日志主题和一个用于 A-KTable
和 B-KTable
聚合的 rocksDB 本地存储。然后,我的拓扑将连接 A-KTable
和 B-KTable
以生成连接的 AB-KStream
。也就是说,我的问题是 A-KTable
和 B-KTable
物化生命周期(变更日志主题和本地 rocksdb 存储)。假设 A-Event
主题和 B-Event
主题保留策略设置为 2 周,有没有办法通过上游事件主题删除保留对 kafka 内部 KTable 物化主题保留策略(变更日志和 rocksDB)产生副作用政策?否则,我们是否可以使用某种保留策略来配置 KTable 物化,以管理变更日志主题和 rockdb 存储生命周期?考虑到我无法显式发出 A-KTable
和 B-KTable
快照墓碑?我担心更新日志和本地商店会无限增长,..,
目前,KStream 不支持开箱即用的功能,即根据源主题保留策略在更新日志主题中注入清理。默认情况下,它使用 "Compact" 保留策略。
同样有一个未解决的 JIRA 问题: https://issues.apache.org/jira/browse/KAFKA-4212
一种选择是注入逻辑删除消息,但这不是一个好方法。
如果是窗口存储,您可以使用 "compact, delete" 保留策略。