Flink——容错机制
状态一致性:
at-most-once:数据最多处理一次,可能缺失数据。
at-least-once:数据最少处理一次,可能重复处理。
exactlly-once:数据正确处理,不重复不缺失。
端到端(end-to-end)状态一致性:
内部保证:checkpoint
source端:外部源重设数据读取位置
sink端:幂等写入和事务性写入
幂等写入:多次写入,只执行一次
事务性写入:等 checkpoint 完成,才写入数据。有两种实现:预写日志(wal)、两阶段调教(2PC)
CheckPonit 检查点(异步分界线快照(asynchronous barrier snapshotting)):
在算子中插入检查点,将状态以异步的方式写入持久化存储,flink 可以根据该位置重启。
故障恢复时,将输入流倒回上一个检查点屏障的位置,同时恢复map算子的状态值,flink 开始重新处理。
状态后端(StateBackend):
MemoryStateBackend:默认,内存级状态后端,将键控状态作为内存中的对象进行管理,存储在 TaskManager 的 JVM 堆上,将 checkpoint 存储在 JobManager 的内存中。
FsStateBackend:将 checkpoint 存到远程的持久化文件系统上,本地状态存在 TaskManager 的JVM 的堆上
RocksDBStateBackend:将所有状态序列化,存入本地的 RocksDB 中

浙公网安备 33010602011771号