Hi 只是配置state.backend.rocksdb.ttl.compaction.filter.enabled 还需要相关的state descriptor也配置上state ttl config,不确定这里所谓的“不理想”的效果是没有及时删除,还是彻底没有删除?
目前RocksDB的后台清理确实需要依赖于compaction的执行,换言之,如果有部分数据一直没有进入compaction,确实存在理论上的可能性一直不会因为过期而删除,但是这个可能性很低不应该对你的使用体验带来很大的影响。 现在的这两种策略是更新时间戳的策略,只要不再访问,到时间都会因为TTL而自动后台清除的。 定时任务去清除过期state这种思路相比目前的实现会影响性能,而且还需要谨慎的一点是目前Flink的访问模式都是单线程的,要避免多线程同时访问。 祝好 唐云 ________________________________ From: yanggang_it_job <[email protected]> Sent: Friday, April 3, 2020 11:14 To: [email protected] <[email protected]> Subject: 关于使用RocksDBStateBackend TTL 配置的问题 Hi: 我们现在启用state.backend.rocksdb.ttl.compaction.filter.enabled进行rocksdb的有效期设置,但效果并不是那么理想。 同时我也有以下问题想不明白: 1、如果rocksdb在compact的时候有些state并没有被compact到,是否就意味着就算这些state已经过期也不会被删除? 2、目前flink的ttl策略只有OnCreateAndWrite和OnReadAndWrite两种策略,是否有那种不需要刷新,到了TTL时间就自动清除。 否则就会出现state一直在刷新导致永远无法删除,最终导致磁盘打满 目前我能想到的方案是,另外写一个定时任务根据配置去清除过期state。 请问大家还有其他更好的方案吗?
