从检查点恢复 Apache Flink 作业

Restore Apache Flink job from checkpoint

我正在使用 Apache Flink + RabbitMQ 堆栈。我知道有机会手动触发保存点并从中恢复作业,但问题是 Flink 在检查点成功后确认消息,如果你想创建保存点并恢复状态,你将丢失上次成功保存点和上次成功检查点之间的所有数据.有没有办法从检查点恢复工作?这将解决在不可重放数据源(如 rabbitmq)的情况下丢失数据的问题。顺便说一句,如果我们有带有所有开销的检查点,为什么不让用户使用它们?

从概念上讲,保存点只不过是一个检查点加上一些元数据。在这两种情况下(Savepoint 和 Checkpoint),Flink 都会为所有操作符、源和接收器的状态创建一个一致的检查点。

检查点被认为是故障恢复的内部机制。但是,检查点可以是 configured to be externalized checkpoints。作业终止时不会自动清除外部化检查点,可用于手动重新启动程序。

RabbitMQ 源代码的问题在于它有点违反了 Flink 的检查点语义,因为它通过确认无法重置的检查点将某些状态推送到外部系统。

触发保存点并在之后立即关闭作业的机制是否可以解决您的问题?这将防止在获取保存点后触发检查点。