Ververica&Flink进阶之三CK快照

B站Flink教程视频观看

CK与State

1
2
3
4
5
6
7
8
9
CK是从source触发到下游所有节点完成的一次全局操作
State是构成CK的数据构成

Key与NoKey维度
KeyedState
OperatorState
Flink管理维度
ManagedState
RawState

CK执行机制

1
2
3
4
5
6
7
8
9
10
11
12
13
三类存储机制
Memory
Fs
RocksDB

执行流程
a.Checkpoint Coordinator向所有source节点trigger Checkpoint
b.source节点向下游广播barrier,这个barrier就是实现Chandy-Lamport分布式快照算法的核心,下游的task只有收到所有input的barrier才会执行相应的Checkpoint
c.当task完成state备份后,会将备份数据的地址(state handle)通知给Checkpoint coordinator
d.下游的sink节点收集齐上游两个input的barrier之后,会执行本地快照
RocksDB会全量刷数据到磁盘上,然后Flink框架会从中选择没有上传的文件进行持久化备份
e.sink节点在完成自己的Checkpoint之后,会将state handle返回通知Coordinator
f.当Checkpoint coordinator收集齐所有task的state handle,就认为这一次的Checkpoint全局完成了,向持久化存储中再备份一个Checkpoint meta文件

CK的Exactly_Once

1
2
3
4
5
6
为了实现EXACTLY ONCE语义,Flink通过一个input buffer将在对齐阶段收到的数据缓存起来,等对齐完成之后再进行处理
而对于AT LEAST ONCE语义,无需缓存收集到的数据
会对后续直接处理,所以导致restore时,数据可能会被多次处理

Flink的Checkpoint机制只能保证Flink的计算过程可以做到EXACTLY ONCE
端到端的EXACTLY ONCE需要source和sink支持