Flink 是流处理器,那么同样会涉及到一致性的3个级别,他们分别如下
1、at-most-once
这其实是没有正确性保障的委婉说法,故障发生后,计数可能丢失。
2、at-least-once
这表示计数结果可能大于正确值,但是绝不会小于正确值,即计数程序发生故障后可能多算,但是绝不会少计算。
3、exactly-once
这是指系统保证在故障发生后得到的计数结果与正确值一致。
保证 exactly-once 不易
1、第一代流处理器只能保证 at-least-once
Storm 和 Samza
2、第二代流处理器
Storm trident 和 Spark streaming,但是必须要在效率和低延迟之间做出权衡。
3、第三代流处理器
Flink,保证了exactly-once ,同时具有高吞吐和低延迟。
4、原因有如下2点
(1)保证 exactly-once 的实现比较复杂
(2)局限性