flink的键值分区状态自动过期ttl配置

编程入门 行业动态 更新时间:2024-10-24 04:40:29

flink的键值<a href=https://www.elefans.com/category/jswz/34/1768534.html style=分区状态自动过期ttl配置"/>

flink的键值分区状态自动过期ttl配置

背景

flink的状态清理之前一直都是通过处理函数的ontimer设置定时器的方式清理掉那些无用的状态,但是这种方式容易出错而且代码也不优雅,使用flink提供的状态ttl的方式可以解决这个问题

flink键值分区状态ttl设置

文件系统/基于内存的状态后端的ttl设置

StateTtlConfig ttlConfig = StateTtlConfig.newBuilder(Time.days(7))// 状态过期的时间,这个状态会在最近一次状态被访问的时间(读和写都算被访问)或者只是最近一次更新/创建状态的时间之后N天后过期.setUpdateType(StateTtlConfig.UpdateType.OnCreateAndWrite)//OnCreateAndWrite表示在最后一次状态更新/创建后开始计时,过期即可删除,OnReadAndWrite表示在最后一次访问状态后开始计时,过期即可删除.setStateVisibility(StateTtlConfig.StateVisibility.NeverReturnExpired)//过期后但是状态被真正删除时返回的状态值,NeverReturnExpired表示状态一旦过期,即使后端状态系统没有删除这个状态,也是返回空值,ReturnExpiredIfNotCleanedUp表示虽然状态过期,但是如果状态后端还没有清理,那么就返回状态的值.cleanupFullSnapshot()//表示生成保存点或者检查点时会把过期状态剔除,这样从保存点或者检查点恢复时过期的状态就会被剔除,注意:仅仅设置这个标志,状态后端并不会把当前过期的状态清除,除非从检查点或者保存点中恢复.cleanupIncrementally(10, false)// 文件系统状态后端/内存状态后端独有的配置,表示第一个参数表示当有状态访问发生时检查的状态个数,发现有过期的就删除,第二个参数表示是否在处理记录的时候也会触发状态检查和清理逻辑,.build();

注意点:当没有状态访问或者是记录处理的时候是不会触发状态清理的,也就是如果比如凌晨你的系统根本没有任何记录处理或者状态访问操作,那么状态是不会被自动清理的,相当于状态清理的触发并不是定时任务的,而是需要触发源的

基于rockdb的状态后端的ttl设置

StateTtlConfig ttlConfig = StateTtlConfig.newBuilder(Time.days(7))// 状态过期的时间,这个状态会在最近一次状态被访问的时间(读和写都算被访问)或者只是最近一次更新/创建状态的时间之后N天后过期.setUpdateType(StateTtlConfig.UpdateType.OnCreateAndWrite)//OnCreateAndWrite表示在最后一次状态更新/创建后开始计时,过期即可删除,OnReadAndWrite表示在最后一次访问状态后开始计时,过期即可删除.setStateVisibility(StateTtlConfig.StateVisibility.NeverReturnExpired)//过期后但是状态被真正删除时返回的状态值,NeverReturnExpired表示状态一旦过期,即使后端状态系统没有删除这个状态,也是返回空值,ReturnExpiredIfNotCleanedUp表示虽然状态过期,但是如果状态后端还没有清理,那么就返回状态的值.cleanupFullSnapshot()//表示生成保存点或者检查点时会把过期状态剔除,这样从保存点或者检查点恢复时过期的状态就会被剔除,注意:仅仅设置这个标志,状态后端并不会把当前过期的状态清除,除非从检查点或者保存点中恢复.cleanupInRocksdbCompactFilter(1000)// rockdb状态后端在定时对状态进行压缩的时候,会顺带着清理过期状态,这个数值代表每访问多少个状态就获取当前时间检查一次状态的过期情况.build();

以上就是基于ttl的状态过期设置,另外我们也可以自己通过定时器的方式实现显式的状态删除

更多推荐

flink的键值分区状态自动过期ttl配置

本文发布于:2023-11-15 00:33:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1590539.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分区   键值   状态   flink   ttl

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!