首页 > 解决方案 > 你可以从 Apache Flink 操作符访问 isBackPressure 吗?

问题描述

我为 Apache Flink 编写了一个 java 程序。我想定期执行一些计算,所以我使用计时器来触发重新计算。例如,每 10 秒的实现花费大约 1 秒(软阈值)来更新状态。由于该作业还应处理常规记录,因此通常在选择时间执行会产生一些背压和数据延迟。所以我想知道如果执行重新计算的任务槽(子任务)受到背压,您是否可以访问操作员中的任何背压指标以跳过重新计算?我在 中搜索它getRuntimeContext().getMetricGroup(),但我没有找到任何有用的东西。

标签: apache-flinkflink-streamingflink-cep

解决方案


一个想法是让 Flink 之外的东西监控相关指标,并让这个外部进程发送一个事件以在判断时机正确时触发重新计算。

您可能会为此使用几个相关的指标,并且isBackPressured可能是最没用的:

  • isBackPressured

    • 自 Flink 1.10 起可用
    • 基于时间点样本
    • 返回
  • idleTimeMsPerSecond

    • 自 Flink 1.11 起可用
    • 在 1.11 和 1.12 中,idle表示不忙,包括背压所花费的时间
    • 从 1.13 开始,idlebackPressure不同
  • backPressuredTimeMsPerSecond,busyTimeMsPerSecond

    • Flink 1.13 中的新功能
    • 比更准确isBackPressured
    • backpressured : 阻塞等待输出缓冲区
    • idle : 没有要处理的数据
    • :不是空闲或背压

推荐阅读