🗒️分布式异步快照算法
2023-8-22
| 2023-8-22
字数 516阅读时长 2 分钟
type
status
date
slug
summary
tags
category
icon
password
来源:《Apache Flink 必知必会经典课程》 https://www.bilibili.com/video/BV1vf4y1x7se?p=5

Chandy-Lamport 算法

流程主要分为三个部分:发起快照、分布式的执行快照和终止快照。
  • 发起快照
任意进程都可以发起快照。如下图所示,当由 P1 发起快照的时候,第一步需要 记录本地的状态,也就是对本地进行快照,然后立刻向它所有 output channel 发送 一个 marker 消息,这中间是没有时间间隙的。marker 消息是一个特殊的消息,它不同于应用之间传递的消息。
notion image
  • 执行快照
Pi 有多个上游管道,因此会多次接收到 marker 消息,这里分两种情况。
第一种情况:这个是 Pi 收到的第一个来自其它管道的 marker 消息,它会先记 录一下本地的状态,再把 C12 管道记为空,也就是说后续再从 P1 发消息,就不包含 在此次快照里了,与此同时立刻向它所有 output channel 发送 marker 消息。 最后 开始记录来自除 Cki 之外的所有 input channel 的消息。
notion image
第二种情况:如果此前 Pi 已经接收过 marker 消息,它会停止记录 Cki 消息,同时会将 此前记录的所有 Cki 消息作为 Cki 在本次快照中的最终状态来保存。
notion image
  • 终止快照
终止快照的条件有两个:
第一,所有进程都已经接收到 marker 消息,并记录在本地快照;
第二,所有进程都从它的 n-1 个 input channel 里收到了 marker 消息,并记 录了管道状态。
notion image
当快照终止,快照收集器 (Central Server) 就开始收集每一个部分的快照去形成全 局一致性快照了。
 

Flink 异步全局一致性快照算法

 
Java 中 Future 如何取消执行Idea插件:Big Data Tools
Loading...