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

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保证‌支持支持
适用场景‌常规数据流高吞吐/数据倾斜/反压严重

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


http://www.kler.cn/a/577065.html

相关文章:

  • 阿里云服务器监控
  • UniApp 运行的微信小程序如何进行深度优化
  • MapReduce:分布式计算的基石
  • Django模型使用和前后端交互
  • 每天五分钟深度学习PyTorch:向更深的卷积神经网络挑战的ResNet
  • Android 检查更新
  • 如果布隆过滤器挂了,里边存的数据全丢失了,怎么恢复呢?
  • Jmeter进行http接口测试详解
  • Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的应用(120)
  • C语言基础系列【20】内存管理
  • Pico 4 Enterprise(企业版)与Unity的交互-打包运行及UI交互篇
  • C++25--lambda表达式
  • 51 单片机中断控制寄存器 TCON
  • Qt 实现会转动风扇效果
  • 探秘 C 语言:编程世界的基石与传奇
  • 【统计至简】【入门测试1】给定数据矩阵X,如何求其质心、中心化数据、标准化数据、格拉姆矩阵、协方差矩阵、相关系数矩阵
  • 在Windows系统上安装和配置Redis服务
  • [c语言日寄]结构体:内存对齐
  • 【贪心算法1】
  • OkHttp 连接池模块原理深度剖析