flink 开启非对齐checkpoint
从Flink 1.11开始,检查点可以是不对齐的。未对齐的检查点包含飞行中的数据(即存储在缓冲区的数据),作为检查点状态的一部分,这允许检查点障碍超越这些缓冲区。因此,检查点的持续时间变得与当前的吞吐量无关,因为检查点障碍实际上不再被嵌入到数据流中。
请注意,无对齐检查点是一项新功能,目前有以下限制:
- Flink目前不支持并发的非对齐检查点。然而,由于检查点的可预测性更强,时间更短,可能根本就不需要并发的检查点。然而,保存点也不能与无对齐检查点同时发生,所以它们的时间会稍微长一些。
- 不对齐的检查点在恢复期间对水印有隐含的保证。
如何开启
ExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();
CheckpointConfig checkpointConfig = streamEnv.getCheckpointConfig();
// 如果某些子任务的对齐时间超过了这个超时,那么检查点将作为一个未对齐的检查点进行
checkpointConfig.setAlignmentTimeout(Duration.ofMillis(param.getLong(UNALIGNED_CHECKPOINTS_TIMEOUT, 5000L)));
// Flink 1.13.x目前不支持并发的非对齐检查点,检查点并发度强制设置为1
checkpointConfig.setMaxConcurrentCheckpoints(1);