Flink checkpoint

basic

分布式系统需要考虑可靠性 checkpoint允许flink恢复流中的状态和位置,使得应用程序具有与无故障执行相同的语义。 有状态,所以需要checkpoint,保证state的容错性

对流消息的处理支持三种级别语义:

  • At Most once - 只管发送一次,可能没有处理,消息最多被处理一次

  • At Least once - 可能发送多次和处理多次,消息最少被处理一次

  • Exactly once - 消息刚好被处理一次 (难度最高)

Asynchronous barrier snapshots (参考了Chandy Lamport Algorithm 分布式快照算法)

解决记录分布式全局状态一致

snapshot: captures the local state of process(e.g., program variables), and communication channel

usage * checkpoint

  • collect garbage

  • detect deadlock - 并发检测

  • debug

分布式系统中没有一个全局共享的内存和全局时钟

因果论, state to state

global snapshot: state for each process and channel

不停机就可以记录快照

创造出一个maker来记录整个分布式链的状态,当链上的节点出现异常需要恢复的时候就根据当前状态找到之前的maker,然后重新计算,保证分布式状态一致

reference

chandy-lamport

chandy pdf

checkpoint