目录
对于不间断 24 小时运行的程序来说,容错至关重要。Flink 定期对每个算子的所有状态进行持久化快照,并将这些快照复制到更持久的地方,例如分布式文件系统。如果发生故障,Flink 可以恢复应用程序的完整状态并恢复处理,就好像没有出现任何问题一样。
本章我们针对 Checkpoint、Savepoint、作业重启调度策略做详细介绍。
分布式快照
Flink 容错机制的核心部分是绘制分布式数据流和算子状态的一致快照。这些快照充当一致的检查点,系统在发生故障时可以回退到这些检查点。Flink 绘制这些快照的灵感来自分布式快照的标准 Chandy-Lamport 算法,并专门针对 Flink 的执行模型进行了定制。
- 快照:是 Flink 作业状态全局一致镜像的通用术语。快照包括指向每个数据源的指针(例如,到文件或 Kafka 分区的偏移量)以及每个作业的有状态运算符的状态副本,该状态副本是处理了 sources 偏移位置之前所有的事件后而生成的状态。
- Checkpoint:一种由 Flink 自动执行的快照,其目的是能够从故障中恢复。Checkpoints 可以是增量的,并为快速恢复进行了优化。
- 外部化的 Checkpoint:通常 checkpoints 不会被用户操纵。Flink 只保留作业运行时的最近的 n 个 checkpoints(n 可配置),并在作业取消时删除它们。但你可以将它们配置为保留,在这种情况下,你可以手动从中恢复。
- Savepoint:用户出于某种操作目的(例如有状态的重新部署/升级/缩放操作)