Flink Stream 处理处理部分失败并避免重新处理

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

我有 Flink 流处理应用程序,它从 Pulsar Topic 读取消息流,处理它们并将文件存储在 S3 中。它执行以下操作。

  1. 使用 TumblingWindow 每 30 秒读取一次 Pulsar 主题的消息
  2. KeyBy 根据key划分流处理。
  3. 处理它并存储在S3中。
  4. 通知下游应用程序

快乐之路效果很好。问题始于部分故障和恢复。

步骤#2 可以创建多个不同的流,因为流中会有不同的密钥。

检查点 1 已触发。 流 1(密钥 1)——处理成功。 流 2(关键 2)——由于某种原因,上述步骤 3 或 4 的处理失败。 检查点 2 已完成。

如果我抛出异常,万一流 2 失败,整个作业将会失败并从检查点 1 重新处理。在这种情况下,流 1 将被重新处理,这是不应该发生的。

Flink 有没有一种方法可以手动避免仅针对失败的消息确认 Pulsar 主题或仅在重启后处理失败的记录。我的要求是不进行重复处理,只重新处理失败的记录。

我读到保存点可以是解决方案之一,但没有找到任何具体的例子。

感谢您的帮助!

apache-flink flink-streaming apache-pulsar
1个回答
0
投票

简短的回答是“不”。 Flink 跟踪源偏移量和接收器事务(加上算子状态),以支持高效的恰好一次处理。

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