【Flink入门修炼】2-1 Flink 四大基石
前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。
本章我们将学习 Flink 重点概念、核心特性等。
本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。
一、四大基石
Flink四大基石分别是:Time(时间)、Window(窗口)、State(状态)、Checkpoint(检查点)。

下面我们对每个部分,分别进行介绍。
(一)State
什么是状态?
流计算不断有数据流入,会基于历史数据和当前数据做计算,那么各个算子之中计算后的数据就是状态。
- Flink 计算引擎,自身就是基于状态计算框架,默认情况下程序自己管理状态
- 提供一致性的语义,使得用户在编程时能够更轻松、更容易地去管理状态
- 提供一套非常简单明了的State API,包括ValueState、ListState、MapState,BroadcastState

(二)Checkpoint
什么是 Checkpoint(检查点)?
一言以蔽之:用于 Flink 的故障恢复。
Checkpoint 会定期生成快照(Snapshot),对当前 State 进行备份。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoint是Flink可靠性的基石
原理:
使用异步屏障快照 Asynchronous Barrier Snapshotting(简称 ABS)算法(依赖于Chandy-Lamport算法的变种)实现分布式快照。
与之相关的,容易混淆的是 savepoint。Savepoint 你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。
| checkpoint | savepoint | |
|---|---|---|
| 概念 | 自动容错机制 | 程序全局状态镜像 |
| 目的 | 程序自动容错,快速恢复。 | 程序修改后继续从状态恢复,程序升级等。 |
| 用户交互 | Flink 系统行为。 | 用户触发。 |
| 状态文件保留策略 | 默认程序删除,可以设置 CheckpointConfig 中的参数进行保留。 | 会一直保存,除非用户删除。 |
(三)Window
流计算一种典型场景是计算一段时间内的统计值,如最近 5min、最近 1h 的点击量。
想完成这个操作,就需要划定一个时间段,也就是开窗,基于这个时间窗口上的数据做计算。
根据窗口数据划分的不同,目前 Flink 支持如下 3 种:
- 滚动窗口,窗口数据有固定的大小,窗口中的数据不会叠加;
- 滑动窗口,窗口数据有固定的大小,并且有生成间隔;
- 会话窗口,窗口数据没有固定的大小,根据用户传入的参数进行划分,窗口数据无叠加。

(四)Time
要进行窗口计算,首先要明确基于的是什么时间。
Flink 中一共提供了三类时间:
- 事件时间(Event Time),即事件实际发生的时间,这个时间一般由数据生产方自身携带;
- 摄入时间(Ingestion Time),事件进入流处理框架的时间;
- 处理时间(Processing Time),事件被处理的时间。

Flink还实现了 Watermark 的机制,能够支持基于事件时间的处理,能够容忍迟到/乱序的数据。这个我们后面篇章再展开讲。
二、小结
本篇对 Flink 四大基石进行了概括性的讲解,让大家对 State、Checkpoint、Window、Time 的概念有了初步的认知,后面的篇章将会对四个概念进行细致的讲解和梳理,并会深入到源码中探究其实现原理和使用方式。
参考文章:
Flink 高级特性(一)-Flink四大基石
Flink:四大基石[Time,Window,Checkpoint,State]_flink的四大基石-CSDN博客
FLINK 四大基石_flink四大基石-CSDN博客
【Flink入门修炼】2-1 Flink 四大基石的更多相关文章
- Flink入门-第一篇:Flink基础概念以及竞品对比
Flink入门-第一篇:Flink基础概念以及竞品对比 Flink介绍 截止2021年10月Flink最新的稳定版本已经发展到1.14.0 Flink起源于一个名为Stratosphere的研究项目主 ...
- Flink入门(二)——Flink架构介绍
1.基本组件栈 了解Spark的朋友会发现Flink的架构和Spark是非常类似的,在整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富 ...
- Flink入门(三)——环境与部署
flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行,包括本地调试环境,集群 ...
- Flink入门(四)——编程模型
flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink的编程模型. 数据集类型: 无穷数据集:无穷的持续集成的数据集合 有界数据集:有 ...
- Flink入门(五)——DataSet Api编程指南
Apache Flink Apache Flink 是一个兼顾高吞吐.低延迟.高性能的分布式处理框架.在实时计算崛起的今天,Flink正在飞速发展.由于性能的优势和兼顾批处理,流处理的特性,Flink ...
- flink 入门
http://ifeve.com/flink-quick-start/ http://vinoyang.com/2016/05/02/flink-concepts/ http://wuchong.me ...
- 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
准备工作 1.安装查看 Java 的版本号,推荐使用 Java 8. 安装 Flink 2.在 Mac OS X 上安装 Flink 是非常方便的.推荐通过 homebrew 来安装. brew in ...
- Flink入门宝典(详细截图版)
本文基于java构建Flink1.9版本入门程序,需要Maven 3.0.4 和 Java 8 以上版本.需要安装Netcat进行简单调试. 这里简述安装过程,并使用IDEA进行开发一个简单流处理程序 ...
- 记一次flink入门学习笔记
团队有几个系统数据量偏大,且每天以几万条的数量累增.有一个系统每天需要定时读取数据库,并进行相关的业务逻辑计算,从而获取最新的用户信息,定时任务的整个耗时需要4小时左右.由于定时任务是夜晚执行,目前看 ...
- 不一样的Flink入门教程
前言 微信搜[Java3y]关注这个朴实无华的男人,点赞关注是对我最大的支持! 文本已收录至我的GitHub:https://github.com/ZhongFuCheng3y/3y,有300多篇原创 ...
随机推荐
- STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写
1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 ...
- SQL 训练题目
title: SQL 训练题目 date: 2023-7-15 01:45:50 tags: - SQL 训练 一. 查询 "01" 课程比 "02" 课程成绩 ...
- MySQL【五】与python交互
1.安装pymysql 安装pymysql pip install pymysql 2.游标(cursor)的使用 cursor,就是一个标识,用来标识数据可以理解成数组中的下标 . 一.声明一个游 ...
- 10.5 认识XEDParse汇编引擎
XEDParse 是一款开源的x86指令编码库,该库用于将MASM语法的汇编指令级转换为对等的机器码,并以XED格式输出,目前该库支持x86.x64平台下的汇编编码,XEDParse的特点是高效.准确 ...
- Java-Stream-flatMap
Leave leave1 = new Leave("1","1",new Date(),CollUtil.newArrayList("A", ...
- MySQL拓展知识
一:视图 1:创建视图 1 --格式:CREATE VIEW 视图名称 AS SQL语句 2 CREATE VIEW v1 AS 3 SELET nid, 4 name 5 FROM 6 A 7 WH ...
- centos7.9离线安装MongoDB4.4.17
前言 MongoDB 5.0开始要求CPU支持avx指令集,参考https://mp.weixin.qq.com/s/6FFXih1DEZYDFOk1hCu69w 环境 CentOS 7.9.2009 ...
- Windows开机自动同步时间
前言 有些Windows客户端因主板电池没电或其他原因,每次启动系统后,读取到BIOS的时间是初始时间(1970年)或错误的时间,这时需要系统启动后立即向时间服务器同步一次时间. 该方法是添加 ...
- AOKO奥科美2.5英寸外置硬盘盒开箱
上次在坛子里发布了一个帖子,然后根据坛友们的反馈,换购了另一个SATA固态硬盘.另一个是配套的硬盘盒,当时在某宝上搜了一圈,最终购买了这款硬盘盒,主要是因为它的外观,旁边有散热片.这款硬盘盒在某宝上不 ...
- .NET桌面程序如何设置任务栏图标右键菜单中的名称
右键任务栏中应用程序图标时会显示程序名称,例如: 这里显示的并不是程序文件名DingTalk,而是文件属性中详细信息选显卡下的"文件说明". 在.NET桌面程序中,是通过修改程序集 ...