应用程序停止时如何从数据库流中的最后一个快照ID启动Flink应用程序

问题描述 投票:0回答:1

我正在 Java 中创建一个从 Iceberg 流式传输的 AWS Flink 应用程序,并想知道 Flink 是否具有机制,可以在整个应用程序关闭时从成功处理的最后一个快照 ID 重新启动流。我应该将快照 ID 写入数据库还是有更好的解决方案?

预期场景:

  • Flink 流处理来自 Iceberg 表的消息(应用程序是可扩展的,可以在多个进程中运行)并将结果存储在 Kinesis 和另一个 IcebergTable 中
  • 应用程序意外死亡
  • 我又开始申请了
  • 它会继续处理消息,不会丢失任何数据,也不会受到任何手动干扰

我不使用专用的 IcebergSource。也许这个实现可以以某种方式解决它。现在我正在使用 FlinkSource。两种源实现都有设置快照 ID 的方法,但必须手动设置并在处理过程中存储在某个地方。有没有办法避免它并使用内部 Flink 机制?

java apache-flink flink-streaming fault-tolerance apache-iceberg
1个回答
0
投票

Flink 有快照机制(检查点和保存点)。它用于将 Flink 的状态写入持久存储,以便在发生错误或您想要执行升级(Flink 集群或应用程序中的业务逻辑)的情况下进行恢复。请参阅https://nightlies.apache.org/flink/flink-docs-stable/docs/ops/state/checkpoints/了解更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.