Fault-tolerance in Flink学习笔记(比较乱)

一、有状态的流计算

1.1 什么是流计算

持续性的流式数据,源源不断的发送到我们的程序(计算引擎)中,做一定的运算,最后将计算的结果返回或者保存的计算。
Fault-tolerance in Flink学习笔记(比较乱)

1.2 什么是分布式流计算

在流计算的基础上,对数据流进行分布式的并发处理:
Fault-tolerance in Flink学习笔记(比较乱)

1.3 什么是流计算中的状态

需要记录并处理多个事件,或者后面的数据要和前面的数据有一定的关联关系才能得到结果,这就是有状态的流计算。
Fault-tolerance in Flink学习笔记(比较乱)

1.4 流计算的状态主要有以下几种

Fault-tolerance in Flink学习笔记(比较乱)

二、全局一致性快照

2.1 什么是全局快照

同一时间,同一地点,全局的一个状态,就叫做全局快照
Fault-tolerance in Flink学习笔记(比较乱)

2.2 为什么需要全局快照

Fault-tolerance in Flink学习笔记(比较乱)

2.3 全局快照的例子

  • 管道C12:P1 发消息给P2的通道
  • 管道C21:P2发消息给P1的通道

对于P1来说,C12是它的OutputChannel,C21是它的InPutChannel

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Chandy-Lamport算法:

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
P1发起,

  • 本地快照S1

  • 发送Maker message

  • 记录inputChannel

  • 假如P3先收到Maker消息(第一次收到消息)

  • P3首先记录本地状态快照 ,然后将C13标记closed转态(关闭的意思就是后续发来的消息不记录本次快照之中)

  • OutPutChannel 发送Maker message

  • 然后将除了C13之外所有的iputChannel 状态记录一下

  • P1 接到P3来的maker

  • 这是P1第二次接到Maker消息,因为发送Maker 也算是看到Maker了

  • 然后将来自C31 inputChannel 关闭(关闭的意思就是后续发来的消息不记录本次快照之中)

  • 然后将除了C31之外的所有inputChannel 记录消息当做状态

  • P2 接收到P3

  • P2第一次收到Maker 消息

  • 对本地状态进行快照 关闭C32

  • 除了C32 之外的所有inputchannel 的状态当做状态
    。。。。

直到形成一个闭环,这次全局快照就算完成了。
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
过去时间点的某一个全局状态

Fault-tolerance in Flink学习笔记(比较乱)

Flink的容错机制

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Checkpoint barrier就相当于Chandy-Lamport算法的maker message
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
一个算子有多个输入,一个barrier到达后,会暂时阻塞这个输入,等待另外的barrier,可能会造成数据反压。

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)

Flink的状态管理

Fault-tolerance in Flink学习笔记(比较乱)

Fault-tolerance in Flink学习笔记(比较乱)
Fault-tolerance in Flink学习笔记(比较乱)