Flink支持不一樣的重啓策略,能夠控制在發生故障時如何重啓新啓動做業。mysql
重啓策略 | 重啓策略值 | 描述 | 默認值 |
---|---|---|---|
Fixed delay | fixed-delay | 嘗試一個給定的次數來重啓Job,若是超過了最大的重啓次數,Job最終將失敗。 | 啓用 checkpointing,但沒有配置重啓策略,則使用固定間隔 (fixed-delay) 策略,默認值爲Integer.MAX_VALUE |
Failure rate | failure-rate | 失敗率重啓策略在Job失敗後會重啓,可是超過失敗率後,Job會最終被認定失敗。 | |
No restart | None | Job直接失敗,不會嘗試進行重啓 | 沒有啓用 checkpointing,則使用無重啓 (no restart) 策略 |
1)重啓策略,都有重試次數和重試之間等待時間的規定,不一樣點在於,分別限定了最大的失敗次數和規定時間內失敗次數。具體根據場景設置sql
2)重啓策略開啓後,若是程序有異常出現,多數狀況會出現與第三方交互的地方鏈接異常狀況,相似mysql kafka等鏈接失敗,沒有必定經驗很差定位問題。ide
1 全局配置 flink-conf.yaml,表示每10s重試一次,最多重試3次spa
restart-strategy: fixed-delay restart-strategy.fixed-delay.attempts: 3 restart-strategy.fixed-delay.delay: 10 s
2 應用代碼設置:rest
env.setRestartStrategy(RestartStrategies.fixedDelayRestart( 3, // 嘗試重啓的次數 Time.of(10, TimeUnit.SECONDS)) // 間隔 );
1 全局配置 flink-conf.yaml,5分鐘內若失敗了3次則認爲該job失敗,重試間隔爲10scode
restart-strategy: 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
2 應用代碼設置:blog
env.setRestartStrategy(RestartStrategies.failureRateRestart( 3, //一個時間段內的最大失敗次數 Time.of(5, TimeUnit.MINUTES), // 衡量失敗次數的是時間段 Time.of(10, TimeUnit.SECONDS)) // 間隔 );
1全局配置 flink-conf.yamlget
restart-strategy: none
2 應用代碼設置:kafka
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.noRestart());