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

Flink 失败重试策略 :restart-strategy.type

在 Apache Flink 中,restart-strategy.type 用于指定作业的重启策略(Restart Strategy),它决定了作业在失败后如何恢复。
Flink 提供了 4 种内置重启策略,可以通过 flink-conf.yaml 或代码动态配置。


1. 可配置的 restart-strategy.type

策略类型配置值 (restart-strategy.type)说明
固定延迟重启fixed-delay每次失败后固定延迟一段时间重启(默认策略)。
失败阈值重启failure-rate在时间窗口内允许一定次数的失败,超过则放弃。
指数延迟重启exponential-delay每次失败后延迟时间指数增长(适合短时故障)。
不重启(直接失败)disable, off, none作业失败后直接终止,不尝试恢复。

2. 详细配置方式

2.1 通过 flink-conf.yaml 配置

# 固定延迟重启(默认)
restart-strategy.type: fixed-delay
restart-strategy.fixed-delay.attempts: 3       # 最大尝试次数
restart-strategy.fixed-delay.delay: 10 s       # 每次重启的延迟时间# 失败率重启
restart-strategy.type: failure-rate
restart-strategy.failure-rate.max-failures-per-interval: 3  # 时间窗口内允许的失败次数
restart-strategy.failure-rate.failure-rate-interval: 5 min  # 时间窗口长度
restart-strategy.failure-rate.delay: 10 s      # 每次重启的延迟时间# 指数延迟重启
restart-strategy.type: exponential-delay
restart-strategy.exponential-delay.initial-backoff: 1 s     # 初始延迟
restart-strategy.exponential-delay.max-backoff: 1 min       # 最大延迟
restart-strategy.exponential-delay.backoff-multiplier: 2.0  # 延迟倍数(指数增长)
restart-strategy.exponential-delay.reset-backoff-threshold: 5 min  # 重置延迟的时间窗口
restart-strategy.exponential-delay.jitter-factor: 0.1       # 随机抖动因子(避免集群同时重启)# 不重启(直接失败)
restart-strategy.type: none

2.2 通过代码动态配置

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// 固定延迟重启
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,      // 最大尝试次数Time.seconds(10)  // 延迟时间)
);// 失败率重启
env.setRestartStrategy(RestartStrategies.failureRateRestart(3,              // 时间窗口内允许的失败次数Time.minutes(5), // 时间窗口长度Time.seconds(10) // 延迟时间)
);// 指数延迟重启
env.setRestartStrategy(RestartStrategies.exponentialDelayRestart(Time.seconds(1),  // 初始延迟Time.minutes(1),  // 最大延迟2.0,             // 延迟倍数Time.minutes(5),  // 重置延迟的时间窗口0.1              // 随机抖动因子)
);// 不重启
env.setRestartStrategy(RestartStrategies.noRestart());

3. 各策略的适用场景

策略适用场景
fixed-delay通用场景,适合大多数作业(如短暂网络故障)。
failure-rate需要严格限制失败次数的场景(如依赖外部服务不可用时快速放弃)。
exponential-delay短时故障频发时避免雪崩效应(如 Kafka 短暂不可用)。
none测试环境或无需自动恢复的作业(如一次性批处理任务)。

参考官方文档:
https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/deployment/config/#restart-strategy-type

http://www.lqws.cn/news/91837.html

相关文章:

  • React 第五十一节 Router中useOutletContext的使用详解及注意事项
  • NVIDIA DOCA 3.0:引领AI基础设施革命的引擎简析
  • 【Elasticsearch】search_after不支持随机到哪一页,只能用于上一页或下一页的场景
  • RAG优化知识库检索(5):多阶段检索与重排序
  • 苹果Mac系统如何彻底清理vscode插件Augment
  • 互联网大厂智能体平台体验笔记字节扣子罗盘、阿里云百炼、百度千帆 、腾讯元器、TI-ONE平台、云智能体开发平台
  • GLIDE论文阅读笔记与DDPM(Diffusion model)的原理推导
  • [特殊字符] Unity 性能优化终极指南 — Text / TextMeshPro 组件篇
  • 车载软件架构 --- 软件定义汽车开发模式思考
  • ABAP设计模式之---“高内聚,低耦合(High Cohesion Low Coupling)”
  • Java垃圾回收机制深度解析:从理论到实践的全方位指南
  • 项目课题——基于ESP32的智能插座
  • iOS 应用如何防止源码与资源被轻易还原?多维度混淆策略与实战工具盘点(含 Ipa Guard)
  • 云服务器部署Gin+gorm 项目 demo
  • Mac版本Android Studio配置LeetCode插件
  • 基于InternLM的情感调节大师FunGPT
  • 谷歌地图免费下载手机版
  • GPTBots在AI大语言模型应用中敏感数据匿名化探索和实践
  • Rust 函数
  • 15个基于场景的 DevOps 面试问题及答案
  • Celery 核心概念详解及示例
  • SpringBoot 系列之集成 RabbitMQ 实现高效流量控制
  • Vue 树状结构控件
  • 【Mysql】隐式转换造成索引失效
  • PopupImageMenuItem 无响应
  • 【AI教我写网站-ECG datacenter】
  • HDFS 写入和读取流程
  • 大模型模型推理的成本过高,如何进行量化或蒸馏优化
  • redis的哨兵模式和Redis cluster
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频