1. 概述

2. 状态一致性分类

2.1. AT-MOST-ONCE

2.2. AT-LEAST-ONCE

2.3. EXACTLY-ONCE

Flink 使用 checkpoint保证 EXACTLY-ONCE

3. 端到端状态一致性

Flink 通过快照机制和 Barrier 来实现一致性的保证,当任务中途 crash 或者cancel 之后,可以通过checkpoing 或者 savepoint 来进行恢复,实现数据流的重放。从而让任务达到一致性的效果,这种一致性需要开启 exactly_once模式之后才行。

需要记住的是这边的 Flink exactly_once 只是说在 Flink 内部是 exactly_once 的,并不能保证与外部存储交互时的 exactly_once,如果要实现外部存储连接后的 exactly_once,需要进行做一些特殊的处理。

3.1. 预写日志

3.2. 两阶段提交

4. Flink + Kafka 端到端状态一致性