深入理解Flink的检查点

检查点

Flink具体如何保证exactly-once呢?它使用一种被称为"检查点"(checkpoint)的特性,在出现故障时将系统重置回正确状态。

Flink的检查点算法Flink检查点的核心作用是确保状态正确,即使遇到程序中断,也要正确。记住这一基本点之后,Flink为用户提供了用来定义状态的工具。

Flink检查点算法的正式名称是异步分界线快照(asynchronous barrier snapshotting)。该算法大致基于Chandy-Lamport分布式快照算法。检查点是Flink最有价值的创新之一,因为它使Flink可以保证exactly-once,并且不需要牺牲性能。

Checkpoint【详细解释见备注】
env.getCheckpointConfig().enableExternalizedCheckpoints(ExternalizedCheckpointCl 
eanup.RETAIN_ON_CANCELLATION);

SavePoint

SavePoint是一个重量级的Checkpoint,你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。可以保存数据源offset, operator操作状态等信息,可以从应用在过去任意做了savepoint的时刻开始继续消费。
用户手动执行,是指向Checkpoint的指针,不会过期,在集群升级/代码迁移等情况下使用。


注意:为了能够在作业的不同版本之间以及 Flink 的不同版本之间顺利升级,强烈

你可能感兴趣的:(Flink,flink,大数据)