知识卡片

Savepoint与Checkpoint的本质区别

专业/工作 · 501.e

内容

Checkpoint是Flink自动、周期性触发的快照,目的是故障后自我恢复,生命周期由框架管理,作业正常结束或被取消后通常也会被清理;Savepoint在机制上和Checkpoint类似,但必须由人手动触发、手动管理生命周期,专门用于”计划内”的场景,比如升级Flink版本、修改业务处理逻辑或调整并行度——这些都是Checkpoint不负责覆盖的场景。要让Savepoint能在逻辑改动后依然正确地把状态映射回对应算子,官方强烈建议给每个算子手动指定固定的uid,而不是依赖框架自动生成的ID,因为自动ID可能随着拓扑结构的变化而改变,导致状态恢复时对不上号。这体现了一个通用思路:自动快照解决”崩了怎么办”,手动快照解决”我要主动改造系统还想保留状态”,两者面对的是不同的触发场景,不能互相替代。二者共用的快照生成机制见[[Checkpoint基于异步Barrier快照的原理]]。

参考来源

《Flink入门与实战》第4章《状态管理及容错机制》