Flink源码阅读之Checkpoint周期触发过程

本文深入源码探讨Flink的checkpoint如何周期性触发。从配置启用Checkpoint开始,详细阐述了不设置时的默认行为,以及ExecutionGraphBuilder在构建时如何配置CheckpointCoordinator。还介绍了当作业状态变化时,CheckpointCoordinatorDeActivator如何启动checkpoint调度,以及调度线程ScheduledTrigger的工作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flink的checkpoint原理就不说了,官网以及博客都有说明,有兴趣的同学可以自行查阅。
本文主要从源码层面分析一下checkpoint是如何周期性触发的。

分析

首先通过如下配置启用CheckPoint

env.enableCheckpointing(1000);

不设置,则默认CheckPoint间隔为-1,即不启用CheckPoint

/** Periodic checkpoint triggering interval. */
private long checkpointInterval = -1; // disabled

如不设置则在构建jobGraph时checkpointInterval 会被赋值为Long.MAX_VALUE
StreamingJobGraphGenerator#configureCheckpointing

long interval = cfg.getCheckpointInterval();
if (interval < MINIMAL_CHECKPOINT_TIME) {
   
	// interval of max value means disable periodic checkpoint
	interval = Long.MAX_VALUE;
}

同时会初始化三个列表:

// collect the vertices that receive "trigger checkpoint" messages.
		// currently, these are all the sources
		List<JobVertexID> triggerVertices = new ArrayList<>();

		// collect the vertices that need to acknowledge the checkpoint
		// currently, these are all vertices
		List<JobVertexID> ackVertices = new ArrayList<>(jobVertices.size());

		// collect the vertices that receive "comm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值