当前位置: 首页 > news >正文

Flink的状态管理

一、状态的概念

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.lryc.cn/news/621681.html

相关文章:

  • 项目篇------------网页五子棋(知识预备)
  • GPT 解码策略全解析:从 Beam Search 到 Top-p 采样
  • spring ai-openai-vl模型应用qwen-vl\gpt-文字识别-java
  • 自学大语言模型之Transformer的Tokenizer
  • 用GPT解释“GPT-5”是什么,有什么优势
  • Spring IOC容器在Web环境中的启动奥秘:深入源码解析
  • Grafana 与 InfluxDB 可视化深度集成(一)
  • Al大模型-本地私有化部署大模型-大模型微调
  • 算法学习远程访问:借助 cpolar 内网穿透服务使用 Hello-Algo
  • 以下是对智能电梯控制系统功能及系统云端平台设计要点的详细分析,结合用户提供的梯控系统网络架构设计和系统软硬件组成,分点论述并补充关键要点:
  • JavaScript 核心基础:类型检测、DOM 操作与事件处理
  • C++——分布式
  • 力扣 —— 二分查找
  • 【JAVA 基础入门】运算符详细介绍
  • 【软件设计模式】工厂方法与抽象工厂
  • 【办公类110-01】20250813 园园通新生分班(python+uibot)
  • 微信小程序 拖拽签章
  • GitHub 热榜项目 - 日榜(2025-08-15)
  • Redis核心架构
  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • electron之win/mac通知免打扰
  • 基本电子元件:碳膜电阻器
  • iOS App TF 上架多工具协作实战,一次高效的应用内测分发流程
  • iOS 性能监控实战,多工具协作完成全方位分析
  • 高并发场景下限流算法对比与实践指南
  • Day59--图论--47. 参加科学大会(卡码网),94. 城市间货物运输 I(卡码网)
  • 《人形机器人的觉醒:技术革命与碳基未来》——电子皮肤技术路线:压阻式电子皮肤及Stanford可拉伸纳米线网格
  • CSS Houdini 与 React 19 调度器:打造极致流畅的网页体验
  • Backblaze 2025 Q2硬盘故障率报告解读
  • 【机器人-基础知识】ROS1和ROS2对比