配置的原則
dubbo推薦在Provider上盡量多配置Consumer端屬性:
作為服務的提供者十酣,比服務方更清楚服務性能的參數(shù),如調用時間,合理的重試次數(shù)等,所以這些參數(shù)應盡量配置在服務的提供者方矢门;
在provider配置后,Consumer不配置則會使用provider的配置值灰蛙,即provider的配置會作為consumer配置的缺省值祟剔。如果使用consumer的全局配置,這對于provider是不可控的缕允,并且是不合理的峡扩。
當消費者請求一個服務時出現(xiàn)錯誤蹭越,會重試連接其他的服務器障本,但重試會帶來更多的延遲。重試次數(shù)可以使用【retries=重試次數(shù)】來設置响鹃。
Dubbo的超時重試機制為服務容錯驾霜、服務穩(wěn)定提供了比較好的框架支持 dubbo在調用服務不成功時,默認會重試2次买置。Dubbo的路由機制粪糙,會把超時的請求路由到其他機器上,而不是本機嘗試忿项,所以 dubbo的重試機器也能一定程度的保證服務的質量蓉冈。,但是在一些比較特殊的網(wǎng)絡環(huán)境下(網(wǎng)絡傳輸慢,并發(fā)多)可能由于服務響應慢,Dubbo自身的超時重試機制(服務端的處理時間超過了設定的超時時間時,就會有重復請求)可能會帶來一些麻煩轩触。
常見的應用場景故障: 1寞酿、發(fā)送郵件(重復) ;2脱柱、賬戶注冊(重復).伐弹。
解決方案:
1.對于核心的服務中心,去除dubbo超時重試機制榨为,并重新評估設置超時時間惨好。
(1)煌茴、去掉超時重試機制 (全局配置)
<dubbo:provider delay="-1" timeout="60000" retries="0"/>
(2)、重新評估設置超時時間 (全局配置)
<dubbo:service interface="*.*" ref="*" timeout="延長服務時間"/>
2.業(yè)務處理代碼必須放在服務端日川,客戶端只做參數(shù)驗證和服務調用蔓腐,不涉及業(yè)務流程處理。
一. 配置:
配置優(yōu)先順序為:消費端方法級 > 服務端方法級 > 消費端接口級 > 服務端接口級 > 消費端全局 > 服務端全局
1). 注解方式:
在提供者中龄句,reties的值設置在@Service中 默認retries=2,timeout=0
@Service(retries = 3,timeout = 3000)
public class XxxServiceImpl implements IXxxService {}
在消費者中合住,reties的值設置在@Reference中
@Reference(retries = 3,timeout = 3000,check = false)//check 默認為true,啟動時檢查服務是否可用
private xxxService xxxService;
2). xml方式:
- 消費端配置:
全局配置
<dubbo:consumer timeout="超時時間" retries="重試次數(shù)"></dubbo:consumer>
接口級配置
<dubbo:reference interface="XXXXXXX" id="XXXXXX" timeout="超時時間" retries="重試次數(shù)">
<dubbo:method name="XXXXXX" timeout="3000" retries="2"></dubbo:method>
</dubbo:reference>
方法級配置
<dubbo:reference interface="XXXXX" id="XXXXX">
<dubbo:method name="XXXXX" timeout="超時時間" retries="重試次數(shù)"></dubbo:method>
</dubbo:reference>
- 服務端配置:
全局配置
<dubbo:provider timeout="超時時間" retries="2"></dubbo:provider>
接口級配置
<dubbo:service interface="XXXXX" ref="XXXXX" timeout="超時時間" retries="重試次數(shù)">
<dubbo:method name="XXXXX"></dubbo:method>
</dubbo:service>
方法級配置
<dubbo:service interface="XXXXXX" ref="XXXXX" >
<dubbo:method name="XXXXX" timeout="超時時間" retries="重試次數(shù)"></dubbo:method>
</dubbo:service>
文獻:
http://www.reibang.com/p/4dc59c2e9930
https://blog.csdn.net/u013938578/article/details/104250807