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提供靈活性運維支持