Flink 检查点存在的性能影响 -16
1.检查点存在的性能影响
Flink的检查点在不停止整个应用的情况下为流式应用生成一致的分布式检查点,但是会增加延迟。Flink采取了一些策略
2. 状态存入检查点过程
(1)任务将状态存入检查点的过程中,会阻塞状态,此时输入进入缓存区。
(2)由于状态可能很大,生成检查点需要写到远端存储系统
(3)Flink设计由状态后端负责生成检查点,所以任务状态拷贝完全取决于后端状态的实现
3.性能改进点
(1)文件系统状态后端和RocksDB状态后端支持异步生成检查点
(2)当检查点生成过程触发时,状态后端会为当前状态创建一个本地拷贝,本地拷贝完成,就可以继续它的常规处理,后台进程会异步将本地状态快照拷贝到远程存储,然后在完成检查点后通知任务
(3)异步生成检查点可以有效降低任务恢复需要的时间
(4)RocksDB支持增量生成检查点,从而降低传输数据量
4.分隔符对齐调整
(1)对于需要极低延迟,容忍至少一次状态保障的应用,可以通过配置让Flink在分隔符对齐的过程中,不缓冲那些已收到分隔符所对应分区的记录,而是直接处理它们
(2)所有的检查点分隔符都到达后,算子才将状态存入检查点,
(3)这样做存在问题:会有一些记录本应该在下一次检查点的,出现在了本地检查点中
(4)如果出现故障,这些记录会被重复处理,这样就以为着检查点只能提供至少一次,而非精确一次的一致性保障
评论