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

Flink之Barrier对齐会影响执行效率,怎么跳过Barrier对齐,跳过后还能保证‌Exactly-Once语义吗?

Flink通过‌非Barrier对齐的检查点机制‌(Unaligned Checkpoint)可以跳过Barrier对齐过程,同时仍支持Exactly-Once语义。

How&Why

一、如何跳过Barrier对齐?
  • 在Flink 1.11及更高版本中,可通过‌非Barrier对齐的检查点‌实现。其核心原理如下:‌
    • 1、触发时机‌
      当任务收到第一个Barrier时,立即开始本地状态快照,无需等待其他上游Barrier到达‌。
    • 2、未处理数据的处理‌
      快照会记录当前Barrier之后到达但尚未处理的数据(包括缓存数据),并将这些数据作为检查点的一部分持久化存储‌。‌
    • 3、异步快照‌
      状态快照生成过程仍采用异步机制,避免阻塞数据处理‌。
二、跳过Barrier对齐后的语义保证
  • 即使跳过Barrier对齐,‌Exactly-Once语义仍可保证‌,原因如下:
    • 状态恢复的完整性‌
      非对齐检查点会将Barrier之后未处理的数据一并保存到快照中。恢复时,系统会从快照中重新处理这些数据,确保没有数据丢失或重复‌。
    • 端到端一致性支持‌
      若Sink端支持两阶段提交(如Kafka事务写入),即使跳过对齐,整个处理链路仍可保证端到端的Exactly-Once‌。
三、跳过Barrier对齐的代价
  • 尽管跳过了对齐过程提升了效率,但会引入以下影响:
    • 检查点体积增大‌
      因需保存未处理数据,检查点的存储空间可能显著增加‌。‌
    • 恢复时间可能延长‌
      恢复时需重新处理更多数据,可能导致恢复耗时增加‌。
    • 适用场景限制‌
      在数据倾斜或反压严重的场景下,非对齐检查点可能更高效;但在数据均匀且延迟敏感的场景中,传统Barrier对齐可能更优‌。
四、配置方式

在代码中启用非对齐检查点:

CheckpointConfig config = env.getCheckpointConfig();
config.enableUnalignedCheckpoints(); // 启用非对齐检查点
config.setAlignmentTimeout(Duration.ofMillis(0)); // 设置对齐超时为0
五、总结
特性Barrier对齐检查点非Barrier对齐检查点
执行效率‌可能因等待Barrier产生延迟无等待,吞吐量更高
检查点大小‌较小较大(含未处理数据)
Exactly-Once保证‌支持支持
适用场景‌常规数据流高吞吐/数据倾斜/反压严重

通过合理选择检查点模式,可在效率与资源消耗之间取得平衡‌。

相关文章:

  • 周末总结(2024/03/08)
  • Java虚拟机之垃圾收集(一)
  • c++ 游戏入门指南
  • libilibi项目优化(1)使用Redis实现缓存
  • 考研机试常见基本题型
  • 学习前置知识第18和19天
  • 计算机网络:计算机网络的组成和功能
  • 腾讯元宝:AI 时代的快速论文阅读助手
  • Linux中的TCP编程接口基本使用
  • 深度学习进阶:神经网络优化技术全解析
  • keil软件下载安装使用(STM32篇)
  • Python 智能机房签到系统:高效管理课堂考勤
  • 计算机毕业设计SpringBoot+Vue.js高校专业实习管理系统(源码+文档+PPT+讲解)
  • 基于深度学习的恶意软件检测系统:设计与实现
  • 【Git】创建,切换分支
  • HTML-网页介绍
  • 剑指 Offer II 061. 和最小的 k 个数对
  • 车载网络测试-DBC文件解读
  • 算法-回溯算法总结
  • 灰色地带规避:知识产权校验API的商标库模糊匹配算法
  • 厦门网站制作网页/百度竞价排名魏则西事件分析
  • 湖南郴州疫情最新数据/长沙正规seo优化公司
  • 北京建设官网证书查询/搜索引擎优化是免费的吗
  • 网站外链哪里做/一般的电脑培训班要多少钱
  • 网站建设方式/nba最新比赛直播
  • 潍坊制作网站的公司/北京最新消息今天