分布式快照记录一致切面而不必同时暂停所有进程
说明进程状态、通道状态和 marker 消息如何构成一致全局状态,并明确算法假设与工程用途。
分布式快照记录一致切面而不必同时暂停所有进程
分布式系统的状态散落在多个进程和传输中的消息里。逐台读取内存会得到不同时间的片段:后读取的进程可能已经处理了某条消息,而先读取的发送方状态还停留在发送之前,组合结果从未真实存在过。
分布式快照要记录一个与因果关系相容的全局状态。它不是要求所有机器在同一物理时刻冻结,而是在系统继续运行时找到一个一致切面,使记录可解释为某次合法执行的中间状态。
全局状态还包括通道中的消息
只保存各进程本地变量不够。消息可能已发送但尚未接收,它属于通道状态。若快照遗漏这类在途消息,恢复后可能丢失工作;若同时保存发送前状态和已接收结果,又可能重复效果。
一致切面的关键条件是:如果快照包含一个事件,也应包含所有因果上先于它的事件。它不能包含接收事件却排除对应发送事件。并发事件没有固定先后,可以落在切面的不同侧,只要不违反因果闭包。
全局状态由所有进程的本地状态和所有通信通道状态组成。具体应用还要定义哪些队列、外部存储、定时器和执行器属于系统边界;边界外副作用不会因算法自动纳入。
Marker 划分记录前后的消息
Chandy-Lamport 算法假设进程通过可靠的 FIFO 通道通信。发起者先记录自己的本地状态,然后在每条输出通道发送 marker。进程第一次收到 marker 时,记录本地状态,把该输入通道记为空,并向输出通道转发 marker。
对其他输入通道,进程从记录本地状态开始,保存收到的普通消息,直到该通道 marker 到达;这段消息就是通道快照。FIFO 保证 marker 之前发送的消息不会越过 marker 后到达,因此边界可被正确识别。
算法允许正常业务消息继续流动。不同进程在不同物理时刻记录本地状态,但 marker 和通道记录把这些局部时刻拼成一致全局状态。
假设变化时算法也要变化
若通道不保证 FIFO,marker 可能越过旧消息,简单规则会漏记在途消息。可以给消息加颜色、序号或采用适合非 FIFO 通道的变体,但不能保留原算法步骤却删除其假设。
可靠通道也不表示永不故障。进程崩溃、网络永久中断和成员变化需要故障检测、重试或快照中止策略。一次快照可能跨越拓扑变更,必须绑定成员配置版本。
算法论文中的进程状态通常抽象为可原子记录。现实数据库、线程池和设备驱动未必提供瞬时一致读取,需要局部检查点、写屏障或 copy-on-write 机制把本地状态固定下来。
快照可以检测稳定性质
某些性质一旦成立就不会因后续计算变回,例如分布式计算终止或令牌永久丢失。对一致全局状态检查这类稳定性质,可以推断系统状态,而不需要停止所有进程。
死锁检测、调试和全局监控也可利用快照,但动态性质需要谨慎。快照未观察到积压,不代表稍后没有积压;跨快照比较还要确保相同成员与指标定义。
在流处理系统中,屏障沿数据流传播,算子在边界保存状态,上游与下游的偏移量共同构成恢复点。这与 marker 思想相近,但实际 exactly-once 效果还依赖源可重放、状态后端和 sink 提交协议。
检查点恢复要处理外部副作用
快照能恢复内部状态,已经发送的邮件、支付请求或设备动作未必可撤销。恢复后重放可能再次执行副作用,因此输出端需要幂等键、事务提交或去重记录。
检查点还必须与输入位置对应。只恢复状态而从最新消息继续会丢失间隔;从过早位置重放则产生重复。源偏移、状态版本、代码版本和依赖模式应作为同一个恢复清单管理。
快照频率在恢复点目标和运行开销之间取舍。频繁快照缩短重放距离,却增加存储、网络和暂停压力;大型状态可做增量快照,但增量链损坏会扩大恢复风险,需要周期性完整基线和校验。
验证要覆盖一致性与可恢复性
生成快照成功不等于恢复成功。应定期在隔离环境恢复,验证状态校验和、输入偏移、成员配置、外部凭据和应用版本,并执行端到端业务不变量检查。
故障演练要覆盖 marker 延迟、通道拥塞、进程在记录中崩溃、快照存储部分写入和多个快照并发。未完成快照应有明确状态,不能被恢复工具误选为最新可用点。
运维界面应展示快照开始与完成时间、各参与者状态、字节量、对齐等待和恢复验证结果。分布式快照的本质是保存因果一致的切面;只有把算法假设、外部副作用和恢复演练连接起来,它才成为可靠的灾难恢复证据。
资料依据
- K. Mani Chandy、Leslie Lamport:Distributed Snapshots: Determining Global States of Distributed Systems,https://www.microsoft.com/en-us/research/redirect/?ref=https%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fchandy.pdf
- Leslie Lamport:Time, Clocks, and the Ordering of Events in a Distributed System,https://www.microsoft.com/en-us/research/publication/time-clocks-ordering-events-distributed-system/