初衷
Flink快照机制以Chandy&Lamport的经典分布式算法为理论基础。算法原文地址:https://lamport.azurewebsites.net/pubs/chandy.pdf
该算法的结论很简单,不少同行进行过翻译/解读。详看原文的动机是自己立了个内部培训的Flag,结果原文看了近一个星期才达到可培训的程度。时隔数月,记忆稍显模糊,那就再梳理一次吧。主要依据行文结构进行总结,不直译原文。
结构
咱们完全依照原文结构来总结,这个结构也很有意思,很严谨。
简介篇
简介篇主要说明了在分布式环境下形成全局状态的困难:
- 模型限制,各节点都只能自己记录自己的状态,只能通过通信传递信息形成全局状态。
- 时钟不同步,各节点时钟是不可能完全一致的。普通的机器的晶体震动频率有偏差的,完全同步不存在的。
- 计算不能停,全局状态的确定过程不能影响到数据计算,不能Stop-The-World
全局状态的典型应用场景:
- 系统死锁
- 计算中止
- 令牌环网中的令牌用完
第二种其实更加典型,比如一个事务的结束(别杠ACID)。原文将其定义为Stable Property的检测,在某个计算过程中,一旦该属性稳定下来,后续值不变。参考上面的三个例子。
系统模型篇
用“顶点”和“边”对整个系统进行