Kafka流KTable更新日志TTL

时间:2019-05-21 12:13:29

标签: apache-kafka apache-kafka-streams rocksdb

假设我有一个A-Event KStream聚合到A-Snapshot KTable和一个B-Event KStream聚合到B-Snapshot KTable中。 A-SnapshotB-Snapshot均未传递空值(而是将删除事件汇总为快照的状态属性)。此时,我们可以假设我们有一个持久化的kafka changelog主题和一个A-KTableB-KTable聚合的rocksDB本地存储。然后,我的拓扑将A-KTableB-KTable连接起来,产生一个连接的AB-KStream。就是说,我的问题在于A-KTableB-KTable的物化生命周期(changelog主题和本地rockdb存储)。假设A-Event主题和B-Event主题保留策略设置为2周,是否有办法对kafka内部KTable实现实例保留策略(changelog和RocksDB)与上游事件主题删除保留产生副作用政策?否则,我们是否可以使用某种保留策略来配置KTable实现,以同时管理changelog主题和rockdb存储生命周期?考虑到我无法显式发出A-KTableB-KTable快照逻辑删除?我担心变更日志和本地存储将无限期增长,..

1 个答案:

答案 0 :(得分:1)

目前,KStream不支持开箱即用的功能,无法根据源主题保留策略在Changelog主题中注入清除内容。默认情况下,它使用“紧凑”保留策略。

有一个相同的公开JIRA问题: https://issues.apache.org/jira/browse/KAFKA-4212

一种选择是注入墓碑消息,但这不是好方法。
如果是窗口存储,则可以使用“压缩,删除”保留策略。