Flink 恰好一次消息处理



我已经设置了一个带有 2 个作业管理器和 3 个任务管理器的 Flink 1.2 独立集群,我正在使用 JMeter 通过生成 Kafka 消息/事件对其进行负载测试,然后进行处理。处理作业在 TaskManager 上运行,通常需要 ~15K 个事件/秒。
作业已设置EXACTLY_ONCE检查点,并将状态和检查点保存到 Amazon S3。 如果我关闭运行作业的任务管理器,则需要几秒钟的时间,然后在另一个任务管理器上恢复作业。该作业主要记录事件 ID,这些事件 ID 是连续的整数(例如,从 0 到 1200000)。当我检查任务管理器上的输出时,
我关闭了最后一个计数,例如 500000,然后当我在不同的任务管理器上检查恢复作业的输出时,它以 ~ 400000 开头。这意味着 ~100K 的重复事件。这个数字取决于测试的速度可以更高或更低。
不确定我是否遗漏了什么,但我希望作业在不同的任务管理器上恢复后显示下一个连续的数字(如500001)。
有谁知道为什么会发生这种情况/我必须配置额外设置才能获得一次?

您看到的预期行为恰好一次。Flink 通过检查点和故障重放的组合来实现容错。保证不是每个事件将只发送到管道一次,而是每个事件将只影响管道的状态一次。

检查点可在整个群集中创建一致的快照。在恢复期间,将还原操作员状态,并从最近的检查点重播源。

有关更全面的解释,请参阅此数据 Artisans 博客文章:使用 Apache Flink 进行高吞吐量、低延迟和恰好一次的流处理,或 Flink™ 文档。

相关内容

  • 没有找到相关文章

最新更新