配置自動重試規(guī)則
更新時間:
當您的系統(tǒng)遇到一些非致命性的錯誤(如偶現(xiàn)的超時等)時,可以通過重試的方式來避免系統(tǒng)最終失敗。AHAS的自動重試規(guī)則可以在客戶端的部分場景下為系統(tǒng)提供自動重試的能力,同時支持自定義重試策略。本文介紹如何配置自動重試規(guī)則。
前提條件
將應(yīng)用接入AHAS應(yīng)用防護,具體操作,請參見接入應(yīng)用方式。
背景信息
自動重試規(guī)則僅支持AHAS Sentinel Java SDK 1.8.0及以上版本,且僅支持通過注解方式埋點(@SentinelResource)或SentinelWrapper自定義埋點,以及Apache HttpClient/OkHttp適配接入的應(yīng)用。通過Java Agent以及其他多語言SDK方式接入的應(yīng)用暫不支持。關(guān)于接入Http Client的操作步驟,請參見接入Http Client。
場景說明
以下場景建議您不要設(shè)置自動重試規(guī)則:
- 建議您不要對致命錯誤(Fatal Error)重試,重試條件策略一般采取白名單機制(如只對超時異常、限流異常重試)。典型的報錯像Error、ClassNotFoundException、IllegalArgumentException這些都建議您不要進行重試,業(yè)務(wù)錯誤建議您不要進行重試。
- 重試需要注意冪等性,非冪等的操作在部分場景下重試(如超時,請求已到達對端)可能會不符合預(yù)期。
- 前端應(yīng)用,超時時間長且慢的接口,建議您不要進行重試。
- 對于NIO、Netty、Reactive場景而言,建議您不要在EventLoop線程中重試,避免等待時阻塞事件傳遞,降低系統(tǒng)吞吐量。
新建自動重試規(guī)則
- 登錄AHAS控制臺,然后在頁面左上角選擇地域。
- 在控制臺左側(cè)導(dǎo)航欄中選擇 。
- 在應(yīng)用防護頁面單擊目標應(yīng)用卡片。
- 在左側(cè)導(dǎo)航欄選擇規(guī)則管理,然后在默認方案方頁下單擊自動重試規(guī)則頁簽。
- 單擊新增自動重試規(guī)則。
- 在彈出的對話框,完成以下配置,然后單擊新建。
參數(shù) 描述 資源名稱 適用該規(guī)則的資源名稱,需要與監(jiān)控頁面上的資源名(埋點傳入的資源名)保持一致。 重試策略 重試時間間隔策略,目前支持固定間隔重試和指數(shù)間隔重試兩種策略: - 固定間隔重試:每次重試之間的時間間隔固定(時間間隔按照下方設(shè)置的基準重試間隔)。
- 指數(shù)間隔重試:以設(shè)置的基準重試間隔為基準,每次以一個固定乘積因子指數(shù)增長(base * (factor^n)),默認乘積因子為1.5(如基準1000 ms,則每次重試間隔按1500、2250、3375這樣的趨勢遞增)。
基準重試間隔 重試的基準重試時長,每次重試等待的時間會基于基準時長和重試策略來計算,取值范圍1 ms~10000 ms,建議不超過5000 ms。 最大重試次數(shù) 最大允許的重試次數(shù),建議在3次以內(nèi),取值范圍1~10。 重試條件策略 設(shè)置符合重試的異常條件。 - 異常白名單模式:只有在白名單列表內(nèi)的異常觸發(fā)時才會重試。
- 異常黑名單模式:在黑名單列表里的異常觸發(fā)時不會進行重試,其余異常都會進行重試。
白名單異常 異常條件集合,每個異常需要填寫異常類的全限定名(如java.lang.IllegalArgumentException),目前匹配條件為精確匹配。 黑名單異常 新增成功的自動重試規(guī)則將會出現(xiàn)在自動重試規(guī)則頁簽中。
文檔內(nèi)容是否對您有幫助?