Rabbitmq 从检查点还原Apache Flink作业

Rabbitmq 从检查点还原Apache Flink作业,rabbitmq,apache-flink,flink-streaming,Rabbitmq,Apache Flink,Flink Streaming,我使用的是ApacheFlink+RabbitMQ堆栈。我知道有机会手动触发保存点并从中还原作业,但问题是Flink在成功的检查点之后会确认消息,如果您想使保存点和还原状态为,则会丢失上次成功的保存点和上次成功的检查点之间的所有数据。有没有办法从检查点恢复作业?这将解决在不可重放数据源(如rabbitmq)的情况下丢失数据的问题。顺便说一句,如果我们有检查点及其所有开销,为什么不让用户使用它们呢?从概念上讲,保存点就是检查点加上一点元数据。在这两种情况下(保存点和检查点),Flink都会为所有操

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

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

检查点被认为是故障恢复的内部机制。但是,检查点可能是安全的。当作业终止时,外部化的检查点不会自动清除,并可用于手动重新启动程序

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


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

是的,这将解决我的问题。是否有方法在保存点之后关闭作业?否。目前不可能,但将添加此方法以启用作业重新缩放,这是目前正在进行的工作。