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,然后重新计算,保证分布式状态一致