dubbo啟動時預設有重試機制和超時機制。
超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次呼叫失敗,
重試機制在出現呼叫失敗時,會再次呼叫。如果在配置的呼叫次數內都失敗,則認為此次請求異常,丟擲異常。
如果出現超時,通常是業務處理太慢,可在服務提供方執行:jstack pid > jstack.log 分析執行緒都卡在哪個方法呼叫上,這裡就是慢的原因。
如果不能調優效能,請將timeout設大。
某些業務場景下,如果不注意配置超時和重試,可能會引起一些異常。
1.超時設定
dubbo消費端設定超時時間需要根據業務實際情況來設定,
如果設定的時間太短,一些複雜業務需要很長時間完成,導致在設定的超時時間內無法完成正常的業務處理。
這樣消費端達到超時時間,那麼dubbo會進行重試機制,不合理的重試在一些特殊的業務場景下可能會引發很多問題,需要合理設定介面超時時間。
比如傳送郵件,可能就會發出多份重複郵件,執行註冊請求時,就會插入多條重複的註冊資料。
(1)合理配置超時和重連的思路
1.對於核心的服務中心,去除dubbo超時重試機制,並重新評估設定超時時間。
2.業務處理**必須放在服務端,客戶端只做引數驗證和服務呼叫,不涉及業務流程處理
(2)dubbo超時和重連配置示例
2.重連機制
dubbo在呼叫服務不成功時,缺省會重試2次。
dubbo的路由機制,會把超時的請求路由到其他機器上,而不是本機嘗試,所以 dubbo的重試機器也能一定程度的保證服務的質量。
但是如果不合理的配置重試次數,當失敗時會進行重試多次,這樣在某個時間點出現效能問題,呼叫方再連續重複呼叫,
系統請求變為正常值的retries倍,系統壓力會大增,容易引起服務雪崩,需要根據業務情況規劃好如何進行異常處理,何時進行重試。
Dubbo的超時重試機制
我們在使用dubbo的過程中一定對於下面的配置十分熟悉 下面來解釋一下各引數的含義 1.timeout 3000 服務呼叫的超時時間,呼叫服務的過程中如果達到3秒就會報超時異常,超時異常後客戶端會進行嘗試設定的 retries 次呼叫。有乙個需要注意的地方,timeout只有在超時異常才有效,如果是...
Dubbo高可用 重試機制
dubbo 服務在嘗試呼叫一次之後,如出現非業務異常 服務突然不可用 超時等 dubbo 缺省會進行額外的最多2次重試。重試次數支援兩種自定義配置 1.通過註解 xml進行固定配置 2.通過上下文進行執行時動態配置。1 通過註解 xml進行固定配置 2 通過rpccontext進行執行時動態配置,優...
中斷重試機制
原文 中斷重試 中斷重試機制 public abstract class retrytemplate public retrytemplate setsleeptime int sleeptime this sleeptime sleeptime return this public intgetr...