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-delayrestart-strategy.fixed-delay.attempts: 3 # 最大尝试次数restart-strategy.fixed-delay.delay: 10 s # 每次重启的延迟时间# 失败率重启restart-strategy.type: failure-raterestart-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-delayrestart-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. 各策略的适用场景
参考官方文档:
https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/deployment/config/#restart-strategy-type