目录
1、检查点
编辑1.1 检查点的保存
1.1.1 周期性的触发保存
1.1.2 保存的时间点
1.1.3 时间点的保存与恢复
1.1.3.1保存
编辑
1.1.3.2 恢复的具体步骤:
1.2 检查点算法
1.2.1 检查点分界线(Barrier)
1.2.2 分布式快照算法(Barrier对齐的精准一次)
1.2.3 分布式快照算法(Barrier对齐的至少一次)
1.2.4 分布式快照算法(非Barrier对齐的精准一次)
1.3检查点配置
1.3.1启用检查点
1.3.2检查点存储
1.3.3其它高级配置
1.3.3.1常用高级配置
1.3.4通用增量 checkpoint (changelog)
1.3.5最终检查点
1.5保存点
1.5.1保存点的用途
1.5.2使用保存点
1.5.2.1 创建保存点
1.5.2.2从保存点重启应用
1.5.3 使用保存点切换状态后端
1.5.3.1 提交flink作业
1.5.3.2 停止flink作业时,触发保存点
1.5.3.3 从savepoint恢复作业,同时修改状态后端
1.5.3.4 从保存下来的checkpoint恢复作业
2、状态一致性
2.1 一致性的概念和级别
2.2 端到端的状态一致性
3、端到端精确一次
3.1 输入端保证
3.2 输出端保证
3.2.1幂等(Idempotent)写入
3.2.1.1预写日志(write-ahead-log,WAL)
3.2.1.2两阶段提交(two-phase-commit,2PC)
3.3 Flink和Kafka连接时的精确一次保证
3.3.1整体介绍
3.3.1.1 Flink内部
3.3.1.2输入端
3.3.1.3输出端
3.3.2需要的配置
在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。
1、检查点
在流处理中,我们可以用存档读档的思路,将之前某个时间点的所有状态保存下来,这份“存档”就是所谓的“检查点”。
这里所谓的检查,是针对故障恢复结果而言的:故障恢复之后继续处理的结果,应该与发生故障之前完全一致,我们需要检查结果的正确性,所以有时又会把checkpoint叫做“一致性检查点”。
1.1 检查点的保存
1.1.1 周期性的触发保存
“随时存档”确实恢复起来方便,可是需要我们不停地做存档操作。如果每处理一条数据就进行检查点的保存,当大量数据同时到来时,就会耗费很多资源来频繁做检查点,数据处理的速度就会受到影响。所以在Flink中,检查点的保存是周期性触发的,间隔时间可以进行设置。