Dubbo超時和重連機制


摘要: dubbo啟動時默認有重試機制和超時機制。 超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次調用失敗, 重試機制在出現調用失敗時,會再次調用。如果在配置的調用次數內都失敗,則認為此次請求異常,拋出異常。

dubbo啟動時默認有重試機制和超時機制。
超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次調用失敗,
重試機制在出現調用失敗時,會再次調用。如果在配置的調用次數內都失敗,則認為此次請求異常,拋出異常。

如果出現超時,通常是業務處理太慢,可在服務提供方執行:jstack PID > jstack.log 分析線程都卡在哪個方法調用上,這里就是慢的原因。
如果不能調優性能,請將timeout設大。

某些業務場景下,如果不注意配置超時和重試,可能會引起一些異常。

超時設置

DUBBO消費端設置超時時間需要根據業務實際情況來設定,
如果設置的時間太短,一些復雜業務需要很長時間完成,導致在設定的超時時間內無法完成正常的業務處理。
這樣消費端達到超時時間,那么dubbo會進行重試機制,不合理的重試在一些特殊的業務場景下可能會引發很多問題,需要合理設置接口超時時間。
比如發送郵件,可能就會發出多份重復郵件,執行注冊請求時,就會插入多條重復的注冊數據。

(1)合理配置超時和重連的思路

1.對於核心的服務中心,去除dubbo超時重試機制,並重新評估設置超時時間。
2.業務處理代碼必須放在服務端,客戶端只做參數驗證和服務調用,不涉及業務流程處理

(2)Dubbo超時和重連配置示例

<!-- 服務調用超時設置為5秒,超時不重試--> 
<dubbo:service interface="com.provider.service.DemoService" ref="demoService"  retries="0" timeout="5000"/>

重連機制

dubbo在調用服務不成功時,默認會重試2次。
Dubbo的路由機制,會把超時的請求路由到其他機器上,而不是本機嘗試,所以 dubbo的重試機器也能一定程度的保證服務的質量。
但是如果不合理的配置重試次數,當失敗時會進行重試多次,這樣在某個時間點出現性能問題,調用方再連續重復調用,
系統請求變為正常值的retries倍,系統壓力會大增,容易引起服務雪崩,需要根據業務情況規划好如何進行異常處理,何時進行重試。

 

轉載:https://yq.aliyun.com/articles/38436?spm=5176.8091938.0.0.JgoAiK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM