当前位置: 首页 > news >正文

一文读懂 Flink Exactly-Once 保证机制深度解析

一文读懂 Flink Exactly-Once 保证机制深度解析

  • 1. 传统方案:Aligned Checkpoint(对齐 Checkpoint)
    • 1.1 为什么需要 Barrier 对齐?
    • 1.2 Aligned Checkpoint 工作流程
    • 1.3 核心实现
    • 1.4 Aligned Checkpoint 的问题
  • 2. 新方案:Unaligned Checkpoint(非对齐 Checkpoint)
    • 2.1 核心思想
    • 2.2 Unaligned Checkpoint 工作流程
    • 2.3 为什么还能保证 Exactly-Once?
    • 2.4 核心实现
    • 2.5 Channel State(通道状态)持久化
  • 3. 两种模式对比
    • 3.1 特性对比表
    • 3.2 性能对比图
  • 4. 混合模式:Aligned Timeout
    • 4.1 配置
    • 4.2 工作流程
    • 4.3 实现原理
  • 5. 何时使用哪种模式?
    • 5.1 使用 Aligned Checkpoint
    • 5.2 使用 Unaligned Checkpoint
    • 5.3 使用混合模式(推荐)
  • 6.配置建议
    • 6.1 启用非对齐 Checkpoint
    • 6.2 配置文件方式
  • 7.核心源码位置
  • 8. 总结
    • 8.1 核心要点
    • 8.2 演进历程

1. 传统方案:Aligned Checkpoint(对齐 Checkpoint)

1.1 为什么需要 Barrier 对齐?

在传统的 Aligned Checkpoint 中,Barrier 对齐是必须的,原因如下:
问题场景

考虑一个两输入流的算子:Input Stream 1: [A1] [A2] [A3] [Barrier-n] [A4] [A5]↓
Input Stream 2: [B1] [Barrier-n] [B2] [B3] [B4]↓Operator State

如果不对齐会发生什么?

时间线:
T1: 从 Stream2 收到 Barrier-n → 如果立即快照
T2: 继续处理 Stream2 的 [B2] [B3]
T3: 从 Stream1 收到 Barrier-n问题:B2 和 B3 已经影响了状态,但它们属于 Checkpoint n+1如果在 T2 和 T3 之间故障,恢复后:- 从 Checkpoint n 恢复状态(不包含 B2、B3 的影响)- 重放 B2、B3(再次影响状态)→ 重复处理!破坏 Exactly-Once!

1.2 Aligned Checkpoint 工作流程

┌─────────────────────────────────────────────────────────────┐
│ Step 1: 接收第一个 Barrier                                   │
├─────────────────────────────────────────────────────────────┤
Input1: [A1][A2][Barrier-n]  ← 收到 Barrier
Input2: [B1][B2][B3][B4]     ← 还未收到Action: 阻塞 Input1,缓存后续数据 [A3][A4]继续处理 Input2 的数据
└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐
│ Step 2: 等待对齐(Barrier Alignment)                       │
├─────────────────────────────────────────────────────────────┤
Input1: [缓存: A3, A4]       ← 阻塞
Input2: [B2][B3][Barrier-n]  ← 收到 BarrierAction: 现在两个输入都收到 Barrier-n
└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐
│ Step 3: 执行快照                                             │
├─────────────────────────────────────────────────────────────┤
State: 状态包含所有 Barrier-n 之前的数据= f([A1,A2][B1,B2,B3])Action: 
1. 异步保存状态
2. 向下游发送 Barrier-n
3. 解除阻塞,继续处理缓存的数据
└─────────────────────────────────────────────────────────────┘

1.3 核心实现

// org.apache.flink.streaming.runtime.io.checkpointing.CheckpointBarrierAlignerpublic class CheckpointBarrierAligner {// 收到 Barrier 时的处理public void processBarrier(CheckpointBarrier barrier, InputChannelInfo channel) {if (numBarriersReceived == 0) {// 第一个 BarrierstartOfAlignmentTimestamp = System.nanoTime();}// 阻塞该通道blockChannel(channel);numBarriersReceived++;// 检查是否所有输入都收到 Barrierif (numBarriersReceived == totalNumberOfInputChannels) {// ✅ 对齐完成!执行 CheckpointtriggerCheckpoint(barrier);// 解除所有通道的阻塞releaseBlocksAndResetBarriers();}}// 阻塞期间缓存数据private void blockChannel(InputChannelInfo channel) {blockedChannels[channel.getGateIdx(
http://www.dtcms.com/a/471092.html

相关文章:

  • wordpress批量发布内容好的seo平台
  • Unity框架YouYouFramework学习第1篇:游戏入口
  • 专业的建设网站服务公司.网站建设课程设计
  • lnmp利用wordpress网站内链优化策略
  • 宁波做网站的哪个好logo设计多少钱
  • 昂瑞微:科创板逐浪者,射频“芯”征程的领航旗舰
  • Cyanine5.5-PEG-OH,在近红外区发射可用于活体成像
  • 网站注册建设外网代理服务器网站
  • Python文件访问
  • 静态网站设计找国外公司做网站
  • 建网站安全大型科技网站建设
  • Mysql初阶第六讲:Mysql内置函数
  • 怒江州建设局网站企业备案网站花溪村镇建设银行网站
  • 网站搭建合同模板2024很有可能再次封城吗
  • Terminal-Bench:AI 代理终端任务基准测试框架正式发布
  • 国测开始整顿CISP乱价现象,对我们有什么影响呢
  • vps搭建asp网站如何做营销型手机网站优化
  • kanass入门到实战(15) - 如何管理项目集
  • 修改el-popover的最小宽度不生效,如何解决
  • 网站图片用什么做的孝感建设局网站
  • 天津营销型网站建设网站推荐广告模板
  • Java 面试高频题:HashMap 与 ConcurrentHashMap 深度解析(含 JDK1.8 优化与线程安全原理)
  • 做特卖的网站有外贸人才网属于什么电子商务模式
  • Imatest-Dot Pattern
  • 查看网站dns做网站配什么绿色好看些
  • 广州网站建设 骏域网站建设个人小型网站建设
  • 记事本做网站格式羽毛球赛事在哪里看
  • 网络物理隔离机制有哪些
  • 国内知名网站建设伺阿里云 wordpress 安装
  • 抓取淘宝商品详情商品数据API接口调用说明文档|获取淘宝商品价格主图数据等