Flink固定重启策略与失败率重启策略最佳实践

前言

在 Flink 中,restart-strategy.type 决定了应用程序失败后如何进行重启策略,下面我们主要讨论下 fixed-delayfailure-rate 的区别,以及在哪个场景中使用哪个最好?


固定延迟重启策略(Fixed Delay Restart Strategy)

配置:

restart-strategy.type: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

机制:

  • 当任务失败时,Flink 会尝试重启任务,最多尝试 attempts 次。
  • 每次重启之间会有固定的延迟(例如 10s)。
  • 如果尝试次数超过 attempts 且任务仍未成功,则任务最终会失败。

适用场景:

  • 当你希望对任务失败的重试次数有明确限制。
  • 适合短时间内可恢复的场景(例如临时的外部依赖中断)。

失败率重启策略(Failure Rate Restart Strategy)

配置:

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

机制:

  • 定义了一个时间窗口(例如 5 min)和最大失败次数(例如 3)。
  • 如果在这个时间窗口内任务失败次数超过了最大失败次数,任务最终会失败。
  • 每次重启之间也有固定的延迟(例如 10s)。

适用场景:

  • 适合对失败频率进行控制,而不是单纯依赖总失败次数。
  • 适合问题可能在短时间内频繁发生,但在较长时间内不会超出容忍范围的场景。

主要区别

特性固定延迟策略失败率策略
重启条件固定次数时间窗口内的失败次数
重启延迟固定延迟固定延迟
终止任务的条件超过最大重试次数时间窗口内失败频率超出限制
适用场景对失败次数要求明确的场景对失败频率有控制要求的场景

哪个更好?

选择依据:

  1. 任务的恢复难度与失败频率

    • 如果任务失败后可以很快恢复(例如依赖的外部服务会在短时间内重启),用 固定延迟策略 更加简单。
    • 如果任务失败的原因可能是系统负载、频繁短暂问题,且这些问题有可能在较长时间范围内偶尔发生,选择 失败率策略 更合适。
  2. 对稳定性和容错的要求

    • 固定延迟策略 更适合严格限制任务重启次数的场景。
    • 失败率策略 更加灵活,适合需要允许一定频率失败的任务。

总结建议:

  • 如果你的任务对外部服务高度依赖,且外部服务的可靠性波动较大,推荐 失败率策略,以便更灵活应对短暂问题。
  • 如果任务失败的原因比较明确,且短期恢复机会较高,选择 固定延迟策略 会更简单直观。

大家还是要根据你们具体的场景,去灵活的调整这两种策略的参数配置!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值