Fault-tolerance in Flink | 学习笔记(一)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习 Fault-tolerance in Flink

开发者学堂课程【开源 Flink 极客训练营Fault-tolerance in Flink】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/760/detail/13340


Fault-tolerance in Flink

 

内容介绍:

一.有状态的流计算

二.全局一致性快照

三.Flink 的容错机制

四.Flink 的状态管理

 

一.有状态的流计算

1.流计算

有一个数据源持续不断的发送消息,同时有一个常驻的程序运行自己写的代码,每从数据源拿到消息后,提前处理,将产出结果产出到下一个。

图片40.png

2.分布式流计算

将数据流以某种方式进行划分使用多个分布式实例,对这个流进行处理。

图片41.png

3.流计算中的状态

图片42.png

计算分为两种,有状态和无状态,无状态的计算只需要处理一个单一的事件,而有状态的计算,需要记录并且处理多个事件。例如,假如事件,有时间的ID和时间的值两部分组成。处理逻辑是每拿到一个事件之后,都解析,并且输出这个事件的值,那么这就是一个无状态的计算。如果每拿到一个状态解析它的值出来之后,需要和前一个事件的值进行比较,比前一个时间的值大的时候才把它进行不出,那这就是一个有状态的计算。

4、流计算中的状态

图片43.png

去重场景下记录所有的主键,又或者说在窗口计算里,比如有一个一小时窗口,已经进入这个窗口还没触发的数据,这也是计算的状态。机器学习,深度学习这种场景里面,分流状态中间结果数据,或者训练的模型和参数数据。这些数据都是流计算中的状态。

 

二.全局一致性快照

Flink 是一个分布式系统,全局一致性快照是分布式系统是做故障恢复的方式。

1.什么是全局快照

图片44.png

假设G20领导人系统在杭州拍摄,给所有参会的领导人拍一张照,16年非常简单,所有人在同一时间同一地点,摆好姿势拍照就好。今年疫情的原因没办法聚在一起,沙特阿拉伯今年都通过网络参会,这种情况下拍全局拍照,只能每一个领导人,在不同的地点分布拍张照,集合起来。

网络异常,图片无法展示
|

分布式应用多个进程,分布在多个服务器上。应用内部有自己的处理逻辑和状态。应用间可以通信,领导人之间可以打电话,发短信或视频过程中交流。分布式应用内部状态应用间可以通信的情况下,某一时刻的全局状态叫做全局快照。

2.为什么需要全局快照

第一方面可以用它做检查点,对它的全局状态做备份,当应用程序故障时可以拿来恢复。第二方面可以做死锁检测,快照当前程序运行,对快照进行分析应用程序是否存在死锁的状态,进行相应的处理。

全局快照的例子:

P1、P2是两个进程,之间有消息发送到管道。P1发给P2的信息通道为C12,P2P1发的消息叫C21。对于P1来说,C12相当于发送消息的管道叫 output channel,C21是接受信息的管道叫 input channel。

除了管道之外每个进程都有本地状态。

图片46.png

P1、P2进程里都有X、Y、Z,有它相应的值。P1、P2本地的状态+它们之间发送消息管道的状态就说它是一个初始的全局状态就叫做全局快照。

图片47.png

假设P1发送消息给P2将其状态变量X2的值从4更改为7,但消息还没有到达P2,在此状态下也组成一个全局快照

图片48.png

P2收到了P1的消息,这个状态也是全局状态。

图片49.png

P2将本地变量从4更改为7,这也是一个全局快照。

图片50.png

当事件发生时,全局的状态会发生改变,这里的事件包括:

.进程发送消息

.进程接收到消息

.进程修改状态

3.什么是全局一致性快照

a->b代表在绝对时钟(realtime)下a happened before b,则当一个全局快照满足下述条件时,我们称其为一个全局一致性快照:如果A->B且B被包含在该快照中,则A也被包含在这个快照中。

图片51.png

快照里的事件是并发的,互相之间没有前后的关系。

图片52.png

没有哪一个发生在后面的事件包含在快照里,前面的事件不包含在快照里。

图片53.png

发生在后面的事情包含在快照里并且前面的事件没有包含在快照里。

4.全局一致性快照的实现方法

时钟同步?

时钟同步没有办法保证全局一致性,NTP 时钟同步存在时间偏差,偏差可能很小毫秒级别的。

图片54.png

P1进程在本地9:20am做了本地的快照,一个事件发生,一个消息发送给P2,消息达到P2时本地时间还不到9:20am。事件发生后本地的时间才达到9:20am。就出现了不一致的情况。

全局同步?

大家都不动拍一张照片,问题也很明显。Stop-the-world 让所有应用程序停下来,性能非常差。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
4月前
|
运维 监控 负载均衡
中间件容错(Fault Tolerance)
【7月更文挑战第24天】
44 2
|
6月前
|
安全 Java Apache
实时计算 Flink版操作报错合集之恢复 checkpoint 时报 "userVisibleTail should not be larger than offset" 错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
100 0
|
存储 消息中间件 机器学习/深度学习
Fault-tolerance in Flink | 学习笔记(三)
快速学习 Fault-tolerance in Flink
Fault-tolerance in Flink | 学习笔记(三)
|
存储 算法 C语言
|
存储 Java 流计算
Fault-tolerance in Flink(三)|学习笔记
快速学习 Fault-tolerance in Flink
Fault-tolerance in Flink(三)|学习笔记
|
机器学习/深度学习 存储 算法
Fault-tolerance in Flink(一)|学习笔记
快速学习 Fault-tolerance in Flink
104 0
Fault-tolerance in Flink(一)|学习笔记
|
存储 消息中间件 算法
Fault-tolerance in Flink(二)|学习笔记
快速学习 Fault-tolerance in Flink
123 0
Fault-tolerance in Flink(二)|学习笔记
|
存储 分布式计算 运维
6.824 2020 视频笔记六:Fault Tolerate Raft 1
6.824 2020 视频笔记六:Fault Tolerate Raft 1
90 0
6.824 2020 视频笔记六:Fault Tolerate Raft 1
|
存储 机器学习/深度学习 算法
Fault-tolerance in Flink | 学习笔记
快速学习 Fault-tolerance in Flink
110 0
Fault-tolerance in Flink | 学习笔记
|
存储 机器学习/深度学习 算法
Flink 必知必会经典课程4:Fault-tolerance in Flink
本文由 Apache Flink PMC , 阿里巴巴高级技术专家李钰分享,主要从有状态的流计算、全局一致性快照 、Flink的容错机制、Flink的状态管理 四个方面介绍 Flink 的容错机制原理。
Flink 必知必会经典课程4:Fault-tolerance in Flink