在 Flink 中,容错机制是通过检查点(Checkpointing)和保存点(Savepoints)来实现的。这两种机制都可以确保在发生故障时,可以从最近的正确状态恢复任务。
- 检查点(Checkpointing):
检查点是 Flink 中用于实现容错机制的关键特性。它定期捕获应用程序的状态并将其写入持久化存储。检查点的间隔可以通过 env.enableCheckpointing(interval)
方法进行配置。默认情况下,检查点间隔为 5 秒。
当检查点触发时,Flink 会暂停应用程序的执行,将状态写入持久化存储,然后恢复执行。这样,在发生故障时,Flink 可以从最近的检查点恢复应用程序的状态。
为了使检查点正常工作,需要确保持久化存储是可用的。Flink 支持多种存储系统,如文件系统、HDFS、S3 等。可以通过 flink.checkpoints.dir
配置项指定持久化存储的目录。
- 保存点(Savepoints):
保存点是用于手动触发容错机制的机制。与检查点类似,保存点也会捕获应用程序的状态并将其写入持久化存储。然而,保存点是由用户触发的,而不是由 Flink 自动触发的。
要触发保存点,可以使用 jobmanager.triggerSavepoint(savepointPath)
方法。这个方法会向作业管理器发送一个请求,要求它在指定的路径下创建一个保存点。作业管理器会将当前应用程序的状态写入保存点,并在完成后返回一个确认消息。
在发生故障时,可以使用保存点来恢复应用程序的状态。与检查点类似,需要确保持久化存储是可用的。
总结:
Flink 通过检查点和保存点实现了容错机制。检查点是自动触发的,用于定期捕获应用程序的状态并将其写入持久化存储。保存点是由用户手动触发的,也可以用于捕获应用程序的状态并将其写入持久化存储。在发生故障时,Flink 可以从最近的检查点或保存点恢复应用程序的状态。