Flink从入门到上天系列第十九篇:Flink当中的容错机制

一:检查点的概念

在流处理中,我们可以用存档读档的思路,就是将之前某个时间点所有的状态保存下来,这份 "存档" 就是我们所谓的 "检查点"(checkpoint)。

遇到故障重启的时候,我们可以从检查点中 "读档",恢复出之前的状态,这样就可以回到当时保存的一刻接着处理数据了。

这里所谓的 "检查",其实是针对故障恢复的结果而言的:故障恢复之后继续处理的结果,应该与发生故障前完全一致,我们需要 "检查" 结果的正确性。所以,有时又会把 checkpoint 叫做 "一致性检查点"。

二:检查点的保存

1:周期性的触发保存

"随时存档"确实恢复起来方便,可是需要我们不停地做存档操作。如果每处理一条数据就进行检查点的保存,当大量数据同时到来时,就会耗费很多资源来频繁做检查点,数据处理的速度就会受到影响。所以在Flink中,检查点的保存是周期性触发的,间隔时间可以进行设置。

2:保存的时间点

我们应该在所有任务(算子)都恰好处理完一个相同的输入数据的时候,将它们的状态保存下来。

这样做可以实现一个数据被所有任务(算子)完整地处理完,状态得到了保存。

一条数据从头走到尾了。是怎么确定的?Barrair分界线。一种特殊的消息,JobManager发出的,从左到右会让一条正常消息完整执行完毕,路过哪个子任务,哪个子任务就做检查点。这样就可以保障分界线之前的数据完整的完成计算。

如果出现故障,我们恢复到之前保存的状态,故障时正在处理的所有数据都需要重新处理;我们只需要让源(source)任务向数据源重新提交偏移量、请求重放数据就可以了。当然这需要源任务可以把偏移量作为算子状态保存下来,而且外部数据源能够重置偏移量;kafka就是满足这些要求的一个最好的例子。

3:保存的具体流程

检查点的保存,最关键的就是要等所有任务将"同一个数据"处理完毕。下面我们通过一个具体的例子,来详细描述一下检查点具体的保存过程。

回忆一下我们最初实现的统计词频的程序------word count。这里为了方便,我们直接从数据源读入已经分开的一个个单词,例如这里输入的是:

"hello","world","hello","flink","hello","world","hello","flink"...

我们所需要的就是每个任务都处理完"hello"之后保存自己的状态。

这里边体现的是状态。紫色的是状态。上边的一个方格代表:一个槽。一个子任务。

检查点就是对状态的一个备份,是状态的一个副本,是状态的一个快照。

三:检查点的保存和恢复流程

1:定期保存检查点

当我们需要保存检查点时,就是在所有任务处理完同一条数据后,对状态做个快照保存下来。例如我们输入数据为:"hello", "world", "hello", "flink", "hello", "world", "hello", "flink"......

我们所需要的就是每个任务都处理完 "hello" 之后保存自己的状态。

2:模拟处理过程发生故障

比方说某子任务突然宕机。

3:通过最近检查点进行恢复

首先需要重启计算机,重新启动任务。此时任务中都是空的, 然后读取检查点,重置各个算子状态。

4:重置偏移量

从检查点恢复状态后还有一个问题:如果直接继续处理数据,那么保存检查点之后、到发生故障这段时间内的数据,也就是第 4、5 个数据("flink" "hello")就相当于丢掉了;这会造成计算结果的错误。

为了不丢数据,我们应该从保存检查点后开始重新读取数据,这可以通过 Source 任务向外部数据源重新提交偏移量(offset)来实现。

做完了这些,整个系统的状态已经完全退回到了检查点保存的那一刻。

5:继续处理数据即可

继续处理数据即可,首先是重放数据,然后处理新数据即可。

相关推荐
折哥的程序人生 · 物流技术专研1 天前
效率翻倍:出版社多库区复合型 ABC 仓储拣选体系全解(含直发/越库/箱式立库/托盘立库)
大数据
Elastic 中国社区官方博客1 天前
Elasticsearch:智能搜索 - AI builder 及 skills
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·全文检索
阿里云大数据AI技术1 天前
Agentic风控:Flink+Fluss+大模型构建Agent全链路风险感知与实时告警
人工智能·flink
跨境摸鱼1 天前
低价模型承压阶段跨境品牌如何把重心转向复购与客单
大数据·人工智能·跨境电商·亚马逊·跨境
果汁华1 天前
LangGraph:构建状态化 AI 代理的革命性编排框架
大数据·人工智能
面向Google编程1 天前
从零学习Kafka:生产者分区机制
大数据·kafka
盘古信息IMS1 天前
全域场景重构,激活智造新未来!盘古信息机加行业数智化解决方案深度解析
大数据·人工智能
跨境卫士-小汪1 天前
多国站点利润分化加剧跨境卖家如何重新排优先级
大数据·人工智能·产品运营·跨境电商·跨境
精益数智工坊1 天前
物料管理是什么?物料管理的具体工作有哪些?
大数据·前端·数据库·人工智能·精益工程
xixixi777771 天前
全模态原生大脑降临:GPT-5.5(Spud)发布,推理/编码提升30%,百万上下文+原生电脑控制,开启Agent新纪元
大数据·网络·人工智能·gpt·安全·电脑·量子计算