重試機(jī)制的使用場景
重試的前提是認(rèn)為故障是暫時的,不是永久的,所以重試才有意義。
使用重試機(jī)制是必須要明確哪些錯誤可以重試乾巧,常見的可重試的錯誤有 接口超時 接受方返回的可以重試的錯誤類型,如業(yè)務(wù)繁忙预愤,流控中等等沟于。
重試機(jī)制的策略
指數(shù)退避算法,重試的間隔時間以指數(shù)形式增長植康,例如失敗后2秒重試第一次旷太,4秒后第二次,8秒后第三次。除了間隔時間供璧,同時還會設(shè)置最大重試次數(shù)存崖。
Spring retry 項(xiàng)目封裝了大量的重試策略,可以通過注解的方式使用睡毒,對原有的業(yè)務(wù)代碼沒有侵入来惧。
重試機(jī)制的設(shè)計重點(diǎn)
1 確定可重試的錯誤類型
2 重試策略的選擇,重試次數(shù)和時間的設(shè)置
3 接受方冪等設(shè)計
4 涉及事務(wù)的場景演顾,避免阻塞線程供搀,可以將重試的數(shù)據(jù)入庫,通過異步定時任務(wù)钠至,或者延遲隊(duì)列來重試趁曼。