Apache Flink 1.15 Checkpoint最新架构设计
1.概述

流处理系统最重要的特性是端到端的延迟,端到端延迟是指开始处理输入数据到输出该数据产生的结果所需的时间。Flink,作为流式计算的标杆,其端到端延迟包括容错的快慢主要取决于检查点机制(Checkpointing),所以如何将 Checkpoint 做得高效稳定是 Flink 流计算的首要任务。我们在 “Flink 新一代流计算和容错——阶段总结和展望”[1] 一文中介绍了 Flink 从社区 1.12 版本开始所做的提升 Checkpointing 机制的努力,本文将着重介绍其中刚刚在 Flink 1.15 版本发布的 Generic Log-Based Incremental Checkpointing 这个功能。
Generic Log-Based Incremental Checkpointing 的设计初衷是我们将全量的状态快照和增量的检查点机制分隔开,通过持续上传增量 Changelog 的方法,来确保每次 Checkpointing 可以稳定快速的完成,从而减小 Checkpointing 之间的间隔,提升 Flink系统端到端的延迟。拓展开来说,主要有如下三点提升:
- 更短的端到端延迟:尤其是对于 Transactional Sink。Transactional Sink 在 Checkpoint 完成的时候才能完成两阶段提交,因此减小 Checkpointing 的间隔意味着
Apache Flink 1.15引入了Generic Log-Based Incremental Checkpointing,旨在减少端到端延迟、提高Checkpoint稳定性和减少容错恢复的数据量。通过持续上传状态增量Changelog,该机制降低了Checkpoint时间,提升了系统性能。设计中包括独立的State Changelog存储(DSTL),并以DFS实现,以实现短期持久化、高写入频率和一致性保证。尽管引入了额外的存储开销,但通过更频繁的Checkpoint,可以减少容错恢复的数据量。
订阅专栏 解锁全文
716

被折叠的 条评论
为什么被折叠?



