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的状态过期设置,另外我们也可以自己通过定时器的方式实现显式的状态删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter笔记:关于Flutter中的大文件上传(上)

Flutter笔记 关于Flutter中的大文件上传(上) 大文件上传背景与 Flutter 端实现文件分片传输 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址&#…

matlab模糊控制文件m代码实现和基础理论

1、内容简介 略 15-可以交流、咨询、答疑 通过m代码来实现生成模糊文件fis文件 2、内容说明 模糊文件m代码实现和基础理论 matlab模糊控制文件m代码实现和基础理论 模糊文件、m代码和模糊基础理论 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.co…

Sui学术研究奖公布,资助研究者探索人工智能、能源市场和区块链游戏

Sui基金会高兴地宣布首轮Sui学术研究奖(SARAs)的获奖者。SARAs计划提供资助,支持推动Sui区块链技术的研究。学术和研究界对我们的初次征集呈现出大量高质量的提案。 已接受的九个提案涵盖了各种主题,如token经济学、智能合约机制…

从混沌到有序:sortedcontainers库的数据魔法改变你的编程体验

前言 在当今数据爆炸的时代,高效地处理和操作数据成为每位Python开发者的核心任务。在这个背景下,sortedcontainers库以其强大的有序数据结构为程序员提供了处理大规模数据的优越选择。本文将深入研究sortedcontainers库中的主要有序数据结构&#xff0…

while read f

关键字:linux循环读取文件内容放入变量;使用while循环和read读取文件内容,直到文件尾部;while read f 使用while循环一次读取文件的一行,直到文件尾部。格式如下: # f为一个变量,表示读取到一…

docker stop slow 解决

验证 NanoMQ stop slow 的问题 daemon 和非 daemon 两种方式 docker stop 都很慢 疑问是默认情况下,SIGTERM 会被处理。 模拟 docker 内发送 SIGTERM 信号 # The default signal for kill is TERM # pkill will send the specified signal (by defau…

开发知识点-Django

Django 1 了解简介2 Django项目结构3 url 地址 和视图函数4 路由配置5 请求及响应6 GET请求和POST请求查询字符串 7 Django设计模式及模板层8 模板层-变量和标签9 模板层-过滤器和继承继承 重写 10 url反向解析11 静态文件12 Django 应用及分布式路由创建之后 注册 一下 13 模型…

matlab直线一级倒立摆lqr控制

1、内容简介 略 16-可以交流、咨询、答疑 matlab直线一级倒立摆lqr控制 2、内容说明 倒立摆是一个开环不稳定的强非线性系统,其控制策略与杂技运动员顶杆平衡表演的技巧有异曲同工之处,目的在于使得摆杆处于临界稳定状态,是进行控制理论研…

ArrayList 扩容 讲解 小白易懂版本

ArrayList 扩容 讲解 小白易懂版本 注意本文使用的是 java 11 首先我们假设有一个空数组,现在要开始添加第一个元素 public boolean add(E e) {//modCount: 这个就是记录修改的次数,比如我们增加或删除元素会对数组的结构造成修改&#xf…

MySQL的SQL预编译及防SQL注入

文章目录 1 SQL语句的执行处理1.1 即时SQL1.2 预处理SQL1.2.1 预编译SQL的实现步骤1.2.2 预编译SQL的C使用举例1.2.3 MYSQL_BIND()函数中的参数类型: 2 SQL注入2.1 什么是SQL注入2.2 如何防止SQL注入 1 SQL语句的执行处理 SQL的执行可大致分为下面两种模式&#xf…

python双端队列_中间是头两边是尾_两边是头中间是尾

双端队列的顺序表存储结构以及两种特殊的双端队列 双端队列 是一种允许我们同时从前端和后端添加和删除元素的特殊队列,它是队列和栈的结合体。 双端队列(deque)与队列(queue)就差了两个字,队列里元素只能…

使用Redis实现热搜功能

Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理 使用redis实现热搜的原理就是维护一个zset集合,然后使用score作为当前搜索词的搜索量,score越高的搜索词就说明该搜索词热度越高。…

深入理解IO和NIO的原理和区别

在计算机编程领域,IO(Input/Output)和NIO(Non-blocking Input/Output)代表了两种截然不同的输入输出模型,它们在数据输入和输出方面采用不同的理念和机制。本文将深入剖析IO和NIO的原理,以及它们…

css实战——清除列表中最后一个元素的下边距

需求描述 常见于列表的排版&#xff0c;如文章列表、用户列表、商品列表等。 代码实现 <div class"listBox"><div class"itemBox">文章1</div><div class"itemBox">文章2</div><div class"itemBox"…

SSM框架Demo: 简朴博客系统

文章目录 1. 前端页面效果2. 项目创建3. 前期配置3.1. 创建数据库数据表3.2. 配置文件 4. 创建实体类5. 统一处理5.1. 统一返回格式处理5.2. 统一异常处理 6. 全局变量7. Session工具类8. 登录拦截器9. 密码加盐加密10. 线程池组件11. dao层11.1. UserMapper11.2. ArticleMappe…

聊聊本地缓存神器:Caffeine

目录 Caffeine基本介绍 简单使用 清除策略 GuavaCache和Caffeine差异 Caffeine基本介绍 Caffeine 是基于 JAVA 8 的高性能本地缓存库。并且在 spring5 (springboot 2.x) 后&#xff0c;spring 官方放弃了 Guava&#xff0c;而使用了性能更优秀的 Caffeine 作为默认缓存组…

nodejs express vue uniapp电影购票系统源码

开发技术&#xff1a; node.js&#xff0c;vscode&#xff0c;HBuilder X express vue elementui uniapp 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页显示搜索电影&#xff0c;轮播图&#xff0c;电影分类&#xff0c;最近上架电影 点击电影进入电影详情&am…

数据结构线性表——栈

前言&#xff1a;哈喽小伙伴们&#xff0c;今天我们将一起进入数据结构线性表的第四篇章——栈的讲解&#xff0c;栈还是比较简单的哦&#xff0c;跟紧博主的思路&#xff0c;不要掉队哦。 目录 一.什么是栈 二.如何实现栈 三.栈的实现 栈的初始化 四.栈的操作 1.数据入栈…

Apache Druid连接回收引发的血案

问题 线上执行大批量定时任务&#xff0c;发现SQL执行失败的报错&#xff1a; CommunicationsException, druid version 1.1.10, jdbcUrl : jdbc:mysql://xxx?useUnicodetrue&characterEncodingUTF-8&zeroDateTimeBehaviorconvertToNull,testWhileIdle true, idle …

Zigbee智能家居方案设计

背景 目前智能家居物联网中最流行的三种通信协议&#xff0c;Zigbee、WiFi以及BLE&#xff08;蓝牙&#xff09;。这三种协议各有各的优势和劣势。本方案基于CC2530芯片来设计&#xff0c;CC2530是TI的Zigbee芯片。 网关使用了ESP8266CC2530。 硬件实物 节点板子上带有继电器…