说到状态管理, 必须要提一下 checkpoint, Flink 中每个函数和算子都可以是有状态的, 有状态的函数需要存储每个事件的处理过程数据, 也因为引入状态, 就不得不考虑各种情况下的容错处理. Flink 通过异步的 checkpoint 机制来实现流式处理过程中的容错, checkpoint 使 flink 可以恢复一个曾经被打断的执行过程, 并保证状态和位置都是一样的, 从而实现容错.
Checkpoint 目前接触过的有两种存储方式, 默认是放到内存中的, 通常需要使用 HDFS (yarn). 这里多说一个知识点, 当 Checkpoint 使能后, 我们消费 Kafka 的数据中设置的 latest 参数也是无意义的, flink 会按照 checkpoint 来处理数据的恢复case.