Apache Flink 的 Checkpoint 机制基于 Chandy-Lamport 算法,通过在数据流中注入 Barrier(屏障) 来切分数据流,从而实现状态的一致性快照。 Barrier 对齐(Aligned) 和 非对齐(Unaligned) 的核心区别在于:当算子有多个输入通道(Input Channel)时,如何处理到达时间不一致的 Barrier,以及是否需要暂停处理数据。 以下是详细的对比解析: --- 1. Barrier 对齐 (Aligned Checkpoint) 这是 Flink 最经典、默认的 Checkpoint 模式(在 Flink 1.11 之前是唯一模式)。 工作机制 假设一个算子有两个输入通道 A 和 B: 1. 等待: 当通道 A 的 Barrier 先到达时,算子会停止处理通道 A 的后续数据(将其缓存起来),因为这部分数据属于下一个 Checkpoint。 2. 对齐: 算子继续处理通道 B 的数据,直到通道 B 的 Barrier 也到达。 3. 快照: 当所有通道的 Barrier 都到齐后,算子进行状态快照(Snapshot...