上一篇内容总结了 Flink 的运行架构和编程模型,这一篇我们要讨论的是 Flink 的设计,包括它是如何解决容错、内存管理、反压问题的,这些知识点是面试的常客,目的是考察大家对 Flink 理解的深度。
本篇面试内容划重点:容错、内存管理、反压。
容错机制
Flink 的容错机制主要是依靠 barrier + checkpoint 来产生分布式快照,分布式快照中保存了计算过程中 Operator/task 的中间状态信息(state)。这些非常轻量级的快照会频繁地异步生成,且对系统性能不会产生太大的影响。state 状态信息会持久化到磁盘。如果程序失败,Flink 会根据最新的 checkpoint 数据来重置 Operator,保证系统能够接着失败前的状态再正常运行。所以,我们要说清楚 Flink 的容错机制必须先搞懂 CheckPoint、Barriers、state 这几个概念。
Checkpoint
Checkpoint 是 Flink 实现容错机制的核心,它能够根据配置周期性地基于数据流中各个 Operator/task 的状态来生成快照,从而将这些状态数据定期持久化存储下来,当程序意外崩溃,重新运行程序时可以有选择地从这些快照进行恢复,从而修正因为故障带来的程序数据异常。
Checkpoint 和 Savepoint 的区别&#