Exactly-once 每一条消息只被流处理系统处理一次。 即使是在各种故障的情况下,流应用程序中的所有算子都保证事件只会被『精确一次』的处理。 Flink实现『精确一次』的分布式快照/状态检查点方法受到 Chandy-Lamport 分布式快照算法的启 发。 流应用程序中每个算子的所有状态都会定期做 checkpoint。 如果是在系统中的任何地方发生失败,每个算子的所有状态都回滚到最新的全局一致 checkpoint 点。 在回滚期间,将暂停所有处理。源也会重置为与最近 checkpoint 相对应的正确偏移量。 整个流应用程序基本上是回到最近一次的一致状态,然后程序从该状态重新启动。 。。。根据现实解释。。。
时间: 2023-06-26 18:03:51 浏览: 132
Flink笔记(二十三):Flink 整合 Kafka (实现 Exactly-Once)
精确一次语义是指在流应用程序中每个事件只会被处理一次,而不会出现多次处理或者被漏处理的情况。这是非常重要的,因为流处理系统处理的数据往往是实时的,而且是不可重复的。如果出现重复处理或者漏处理的情况,就可能导致数据的不一致性,进而影响到业务的正确性。
Flink通过实现分布式快照/状态检查点方法来保证精确一次语义。具体来说,Flink会定期对所有算子的状态做checkpoint,将所有状态保存到持久化存储中。如果在系统中出现任何故障,Flink会将所有算子的状态回滚到最新的全局一致checkpoint点,源也会重置为与最近checkpoint相对应的正确偏移量。这样,整个流应用程序就可以回到最近一次的一致状态,然后程序从该状态重新启动,保证了数据的一致性和正确性。
阅读全文