共计 1561 个字符,预计需要花费 4 分钟才能阅读完成。
前一章咱们对 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 博客 ](https://blog.csdn.net/weixin_43563705/article/details/107614714)
FLINK 四大基石_flink 四大基石 -CSDN 博客