一、状态的概念

Flink的状态其实你就可以将其想象为中间结果就可以了。在Flink中,算子的任务可以分为无状态和有状态两种情况。

无状态算子任务在计算过程中是不依赖于其他数据的,只根据当前的输入数据就可以得到结果输出。比如之前讲到的Map、FlatMap、Filter算子等。

有状态算子任务,在计算的过程中需要依赖一些其他的数据,然后再结合当前的输入数据得到最终的执行结果。比如聚合算子、窗口算子都是有状态的算子。

有状态算子的一般处理流程是:

        (1)、算子任务接收上游输入的数据;

        (2)、获取当前的状态信息;

        (3)、根据业务逻辑进行处理并更新状态信息;

二、状态的分类

Flink总体来说有两种分类状态:托管状态、原始状态。

托管状态就是由Flink来进行状态的统一管理。状态的存储访问、故障恢复和重组等一系列问题都由Flink来实现,开发者只用去调接口就可以了;原始状态是自定义的,相当于就是自己开辟一块内存,然后由开发者自己来管理状态信息,自己实现状态的序列化和故障恢复。

但是大部分情况下,我们都是使用的托管状态,就是由Flink来管理状态信息。

那在托管状态下其实又把状态分成了两类,分别是算子状态(Operator State)和按键分区状态(Keyed State)。

这两种状态的区别很简单,就是看状态的获取是否要按照Key来获取,不同的Key之间不能获取到同一个状态的。下面的这个就是算子状态的示意图。在这个图中,流入同一个子任务的数据共享同一个状态。

下面是按键分区状态的示意图,就能看到虽然数据会发往同一个子任务中,但是在这个子任务中依然会按照Key值来获取不同的状态信息。

三、状态的生存时间

在实际的应用中,状态会随着时间的推移而渐渐增多,如果不对其加以限制,状态就会把存储空间耗尽。开始的优化思路是直接在代码中调用.clear()方法去清除状态,但是有的时候我们的逻辑不希望将状态直接给清除掉,这时就需要配置一个状态的“生存时间”(time-to-live,TTL)。也就是说,超出这一时间之后状态才会被清除。那这里又出现了一个问题,就是我们需要怎么去监测这个状态信息的生存时间到了呢?如果用一个进程不停地扫描所有的状态看是否过期,这样会消耗大量的资源在做这种无用功。所有我们给状态加了一个属性,也就是状态的“失效时间”。状态创建时,设置失效时间=当前时间+TTL;之后如果有对状态的访问和修改,我们再对失效时间进行更新;当需要拿数据进行操作的时候或者每隔一段时间扫描检查状态是否失效的操作要执行时,就可以判断状态是否失效,从而确定是否需要将状态清除。

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

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

相关文章

GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚

第八天核心任务:解决开发中的两大技术卡点今天的开发不仅聚焦于代码层面的数据库字段映射问题,还遭遇了一个困扰团队许久的环境难题 ——Go 项目启动异常缓慢。经过多维度排查,我们不仅理清了 GORM 命名策略的设计逻辑,还找到了影…

在Ubuntu上安装Google Chrome的详细教程

步骤 1:下载 Google Chrome 安装包 打开浏览器输入https://www.google.cn/chrome/,然后进入Chrome浏览器官方网站 点击下载选择Debian/Ubuntu版本 google-chrome-stable_current_amd64.deb步骤 2:安装下载的.deb 包 sudo dpkg -i google-chro…

el-table合并相同名称的行

el-table合并相同名称的行 <template><el-table:data"tableData":span-method"objectSpanMethod"border><el-table-columnprop"name"label"名称"width"180"></el-table-column><el-table-column…

解决 VSCode 无法从右键菜单“通过 Code 打开”文件夹的问题

&#x1f9e9; 一、问题现象 VSCode 已安装&#xff0c;但右键文件夹/桌面空白处无“通过 Code 打开在 VSCode 中执行 Shell Command: Install ‘Open with Code’ 无反应手动添加后菜单显示乱码&#xff08;如 €š‡ Code ‰“€&#xff09;点击右键菜单无响应或提示“找不到…

服务器数据恢复—服务器硬盘状态灯变红,分区数据恢复过程

服务器数据恢复环境&故障&#xff1a; 某公司服务器上有一组由3块硬盘组建的raid5磁盘阵列。 服务器上1块硬盘的状态灯变为红色&#xff0c;磁盘阵列出现故障&#xff0c;分区无法识别。服务器数据恢复过程&#xff1a; 1、将故障服务器上所有磁盘编号后取出。经过初检&…

MySQL → SQL → DDL → 表操作 → 数据类型 知识链整理成一份系统的内容

1. 知识结构MySQL└── SQL&#xff08;结构化查询语言&#xff09;├── DDL&#xff08;数据定义语言&#xff09; → 定义结构│ ├── 表操作&#xff08;创建/修改/删除表&#xff09;│ └── 数据类型&#xff08;列字段类型定义&#xff09;├── DML&…

基于 gRPC 的接口设计、性能优化与生产实践

gRPC 是一种高性能、跨语言的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;由 Google 开发&#xff0c;基于 HTTP/2 协议和 Protocol Buffers&#xff08;Protobuf&#xff09;序列化机制&#xff0c;广泛应用于微服务架构和分布式系统中。本文将深入解析 gRPC 的底…

如何回答研究过MQ的源码吗

​一、核心回答框架&#xff08;由浅入深&#xff09;​​1️⃣ ​明确研究对象和深度​“我主要研究过 ​​[具体MQ名称&#xff0c;如RocketMQ/Kafka/RabbitMQ]​​ 的核心模块源码&#xff0c;重点关注 ​​[选1-2个核心方向]​​ &#xff0c;比如存储机制、网络通信或事务…

20250815给ubuntu22.04.5的系统缩小/home分区

20250815给ubuntu22.04.5的系统缩小/home分区 2025/8/15 9:42缘起&#xff0c;联想IdeaPad笔记本电脑&#xff0c;换了4TB的SSD固态硬盘。 WIN10和ubuntu22.04.5的双系统。 WIN10系统&#xff1a; C盘 500GB&#xff1f; D盘 500GB&#xff1f;ubuntu22.04.5 /home分区大概 2.7…

Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户

今天重装WIN11系统后&#xff0c;发现在首次开机引导&#xff08;OOBE 阶段&#xff09;中&#xff0c;微软默认强制联网并登录微软账户&#xff0c;没有的让你注册什么的就很烦。通过下面方法可以跳过登录微软账户&#xff0c;直接创建本地账户。✅ 方法一&#xff1a;断网&am…

IDE:vscode的vue3模板

快捷键打开配置选项&#xff1a;ctrl shift p选择配置文件&#xff1a;Snippet: Configure Snippets{// Place your snippets for vue here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigg…

C++_390_透传功能中,使用单例模式,管理session透传会话的生命周期,为每个会话记录报警读取状态,监控会话心跳状态,后台线程自动清理超时会话

问题:对接板端,cvms lite 通道管理页面,无法添加和删除多目通道 审核:XXX 根因分析:多通道的刪除和添加需要通过eventcheck上告实现,cvms lite云走的透传没有eventcheck 解决办法:云透传加上eventcheck上告 footer: Closes: #BUG2025052701632 我帮你分两部分解析:先解…

MIPI-csi调试

调试流程1. 硬件连线检查数据线&#xff08;MIPI Data Lanes&#xff09; &#xff1a;确认 IMX415 模组的 4 条数据线 1 条时钟线连接正确。如果是 4-lane 输出&#xff0c;SoC 的 D-PHY 必须也配置成 4-lane 接收。控制线&#xff1a;原理图IC SDA/SCL → &i2c8 控制器管…

Mysql——》提取JSON对象和数组

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

JSON值包含引号

目录背景代码正则说明背景 很多时候&#xff0c;在无法使用Gson等能处理非标准化JSON的工具时&#xff0c;需要对JSON值中的JSON限定符进行转义&#xff0c;使用正则比较方便&#xff0c;以对JSON值中的引号做转义为例 代码 private static String escapeUnescapedQuotes(St…

後端開發Python篇

書接上回&#xff1a;後端開發技術教學(五) 魔術方法、類、序列化-CSDN博客 必要資源&#xff1a; trae中下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 python解釋器&#xff1a;Welcome to Python.org 前言…

Python匿名函数的具体用法

引言 在Python编程中&#xff0c;匿名函数&#xff08;即lambda函数&#xff09;是一种简洁定义小型函数的方式。它无需通过def关键字命名&#xff0c;适用于需要临时函数或作为高阶函数参数的场景。本文将详细解析lambda函数的语法、应用场景及最佳实践。 定义与语法 官方定义…

ARM芯片架构之CoreSight SoC-400 组件介绍

CoreSight SoC-400 组件介绍1. Debug Access Port (DAP) 功能&#xff1a;DAP 是外部调试器与 SoC 内部调试基础设施的接口核心。它将调试端口&#xff08;JTAG-DP 或 SW-DP&#xff09;与多个访问端口&#xff08;AP&#xff09;连接起来&#xff0c;使调试器能够访问内存、外…

SynAdapt:通过合成连续思维链实现大语言模型的自适应推理

摘要&#xff1a;尽管链式思维&#xff08;CoT&#xff09;推理能提升模型性能&#xff0c;却因离散 CoT 标记&#xff08;DCoT&#xff09;的生成而带来显著时间开销。连续 CoT&#xff08;CCoT&#xff09;是更高效的替代方案&#xff0c;但现有方法受限于间接微调、对齐不足…

计算机毕设不知道选什么题目?基于Spark的糖尿病数据分析系统【Hadoop+Spark+python】

精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍选…