Flink的Checkpoint(检查点)和Savepoint(保存点)是两种不同的状态快照机制,主要区别如下:
1. Checkpoint
- 核心功能:周期性触发的容错机制,用于故障恢复时保证状态一致性57。
- 触发方式:由JobManager周期性触发,通过Barrier机制实现分布式快照26。
- 存储内容:保存所有算子的状态快照,支持Exactly-Once语义15。
- 生命周期:自动管理,旧检查点会被清理以释放存储空间7。
- 性能影响:高频检查点可能增加系统开销,需平衡间隔时间与恢复速度7。
2. Savepoint
- 核心功能:手动触发的全局状态快照,用于有计划的状态迁移或版本升级5。
- 触发方式:通过命令行或API显式触发,生成完整应用状态副本5。
- 存储内容:包含检查点数据及作业拓扑信息,支持跨集群或配置恢复5。
- 生命周期:需手动维护,长期保留需额外存储成本5。
- 用途扩展:支持作业暂停后从相同状态恢复,或Flink版本升级时的兼容性测试5。
3. 关键差异
特性 | Checkpoint | Savepoint |
---|---|---|
触发方式 | 自动周期性触发27 | 手动触发5 |
存储目标 | 故障恢复(短期)7 | 运维操作(长期)5 |
数据包含 | 仅状态快照1 | 状态+作业拓扑5 |
性能优化 | 增量快照(RocksDB支持)3 | 全量快照5 |
4. 技术实现
- Checkpoint:基于Chandy-Lamport算法,通过Barrier对齐实现一致性快照26。
- Savepoint:依赖Checkpoint机制生成,但需额外序列化作业元数据5。
两者共同构成Flink的容错与运维能力,Checkpoint保障实时可靠性,Savepoint提供灵活性运维支持