【Flink入门修炼】2-1 Flink 四大基石

前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。
本章我们将学习 Flink 重点概念、核心特性等。
本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。

一、四大基石

Flink四大基石分别是:Time(时间)、Window(窗口)、State(状态)、Checkpoint(检查点)。
image.png

下面我们对每个部分,分别进行介绍。

(一)State

什么是状态?
流计算不断有数据流入,会基于历史数据和当前数据做计算,那么各个算子之中计算后的数据就是状态。

  • Flink 计算引擎,自身就是基于状态计算框架,默认情况下程序自己管理状态
  • 提供一致性的语义,使得用户在编程时能够更轻松、更容易地去管理状态
  • 提供一套非常简单明了的State API,包括ValueState、ListState、MapState,BroadcastState

image.png

(二)Checkpoint

什么是 Checkpoint(检查点)?
一言以蔽之:用于 Flink 的故障恢复。

Checkpoint 会定期生成快照(Snapshot),对当前 State 进行备份。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoint是Flink可靠性的基石

原理:
使用异步屏障快照 Asynchronous Barrier Snapshotting(简称 ABS)算法(依赖于Chandy-Lamport算法的变种)实现分布式快照。

与之相关的,容易混淆的是 **savepoint。**Savepoint 你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。

checkpointsavepoint
概念自动容错机制程序全局状态镜像
目的程序自动容错,快速恢复。程序修改后继续从状态恢复,程序升级等。
用户交互Flink 系统行为。用户触发。
状态文件保留策略默认程序删除,可以设置 CheckpointConfig 中的参数进行保留。会一直保存,除非用户删除。

(三)Window

流计算一种典型场景是计算一段时间内的统计值,如最近 5min、最近 1h 的点击量。
想完成这个操作,就需要划定一个时间段,也就是开窗,基于这个时间窗口上的数据做计算。

根据窗口数据划分的不同,目前 Flink 支持如下 3 种:

  • 滚动窗口,窗口数据有固定的大小,窗口中的数据不会叠加;
  • 滑动窗口,窗口数据有固定的大小,并且有生成间隔;
  • 会话窗口,窗口数据没有固定的大小,根据用户传入的参数进行划分,窗口数据无叠加。

image.png

(四)Time

要进行窗口计算,首先要明确基于的是什么时间。
Flink 中一共提供了三类时间:

  • 事件时间(Event Time),即事件实际发生的时间,这个时间一般由数据生产方自身携带;
  • 摄入时间(Ingestion Time),事件进入流处理框架的时间;
  • 处理时间(Processing Time),事件被处理的时间。

image.png

Flink还实现了 Watermark 的机制,能够支持基于事件时间的处理,能够容忍迟到/乱序的数据。这个我们后面篇章再展开讲。

二、小结

本篇对 Flink 四大基石进行了概括性的讲解,让大家对 State、Checkpoint、Window、Time 的概念有了初步的认知,后面的篇章将会对四个概念进行细致的讲解和梳理,并会深入到源码中探究其实现原理和使用方式。


参考文章:
Flink 高级特性(一)-Flink四大基石
Flink:四大基石[Time,Window,Checkpoint,State]_flink的四大基石-CSDN博客
FLINK 四大基石_flink四大基石-CSDN博客

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

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

相关文章

ShardingJdbc实战-分库分表

文章目录 基本配置分库分表的分片策略一、inline 行表达时分片策略algorithm-expression行表达式完整案例和配置如下 二、根据实时间日期 - 按照标准规则分库分表标准分片 - Standard完整案例和配置如下 基本配置 逻辑表 逻辑表是指:水平拆分的数据库或者数据表的相…

Windows11服务器远程连接错误:错误代码0x3,不重启服务器的解决方法

问题描述 在连接远程服务器时,发现如下错误: 您的远程桌面会话已结束,可能是下列原因之一: 管理员已结束了会话 在建立连接时发生错误。 发生网络问题 展开详细信息后发现错误代码0x3,如下图: 但之前都能…

安卓开发4-MQTT环境搭建

安卓开发4-MQTT环境搭建 1.搭建好安卓环境 略 2.打开一个已经创建好的工程&#xff0c;分别修改下面3个文件 2.1.AndroidManifest.xml 添加权限 <uses-permission android:name"android.permission.INTERNET" /><uses-permission android:name"and…

什么是VR虚拟社区|VR元宇宙平台|VR主题馆加盟

VR虚拟社区是指一种基于虚拟现实技术构建的在线社交平台或环境&#xff0c;用户可以在其中创建虚拟化的个人形象&#xff08;也称为avatars&#xff09;并与其他用户进行交流、互动和合作。在VR虚拟社区中&#xff0c;用户可以选择不同的虚拟场景和环境&#xff0c;如虚拟公园、…

MyBatis 学习(五)之 高级映射

目录 1 association 和 collection 介绍 2 案例分析 3 一对一关联和一对多关联 4 参考文档 1 association 和 collection 介绍 在之前的 SQL 映射文件中提及了 resultMap 元素的 association 和 collection 标签&#xff0c;这两个标签是用来关联查询的&#xff0c;它们的属…

视频在线压缩

video2edit 一款免费的在线视频编辑软件&#xff0c;可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址&#xff1a;在线视频编辑器和转换器 - 编辑&#xff0c;转换和压缩视频文件 打开视频压缩页面&#xff0c;上传想要压缩视频&#xff0c;支持MP4&…

【前端素材】推荐优质在线电影院商城电商网页Hyper平台模板(附源码)

一、需求分析 1、系统定义 在线电影商城是指一个通过互联网提供电影服务的平台&#xff0c;用户可以在该平台上浏览电影资源、租借或购买电影&#xff0c;以及观看在线影片。 2、功能需求 在线电影商城是指一个通过互联网提供电影服务的平台&#xff0c;用户可以在该平台上…

mybatisplus使用教程,京东物流java面试流程

造成雪崩的真实场景 1.4.1 服务提供者不可用 硬件故障:如网络故障、硬盘损坏等。 程序的 bug:如算法需要占用大量 CPU 的计算时间导致 CPU 使用率过高。 缓存击穿:比如应用刚重启&#xff0c;短时间内缓存是失效的&#xff0c;导致大量请求直接访问到了数据库&#xff0c;数…

【算法】二叉搜索树的插入、删除、转换操作

1 二叉搜索树的插入操作 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能…

动态内存分配

目录 存在动态内存分配的原因动态内存函数mallocfreecallocrealloc 常见的动态内存错误C/C程序的内存开辟柔性数组柔性数组的特点柔性数组的使用柔性数组的优势 存在动态内存分配的原因 内存开辟方式,例如&#xff1a; int val 20;在栈空间上开辟四个字节 char arr[10] { 0 …

一线互联网大厂中高级Android面试真题收录,记一次字节跳动Android社招面试

在开始回答前&#xff0c;先简单概括性地说说Linux现有的所有进程间IPC方式&#xff1a; 1. **管道&#xff1a;**在创建时分配一个page大小的内存&#xff0c;缓存区大小比较有限&#xff1b; 2. 消息队列&#xff1a;信息复制两次&#xff0c;额外的CPU消耗&#xff1b;不合…

C# 解决uploadify插件上传时造成session丢失问题

出现的问题&#xff1a; 在应用uploadify插件实现上传图片时&#xff0c;报了HTTP Error&#xff0c;经过在Network查看上传方法报错码是302&#xff0c;那这里就可以知道问题是什么了&#xff0c;HTTP 302是请求被重定向&#xff0c;如果你的uploadify处理上传方法有session验…