dubbo超時問題

2021-08-04 03:02:39 字數 1296 閱讀 7904

dubbo是阿里開源的分布式遠端呼叫方案(rpc),由於網路或服務端不可靠,會導致呼叫出現一種不確定的中間狀態(超時)。為了避免超時導致客戶端資源(執行緒)掛起耗盡,必須設定超時時間。

provider可以配置的consumer端主要屬性有timeout、retries、loadbalance、actives和cluster。provider上應盡量多配置些consumer端的屬性,讓provider實現者一開始就思考provider的服務特點與服務質量。配置之間存在著覆蓋,具體規則如下: 

1. 方法級配置別優於介面級別,即小scope優先 

2. consumer端配置優於provider配置,優於全域性配置 

3. dubbo hard code的配置值(預設)

根據規則2,縱使消費端配置優於服務端配置,但消費端配置超時時間不能隨心所欲,需要根據業務實際情況來設定。如果超時時間設定得太短,複雜業務本來就需要很長時間完成,服務端無法在設定的超時時間內完成業務處理;如果超時時間設定太長,會由於服務端或者網路問題導致客戶端資源大量執行緒掛起。

在provider上盡量多配置consumer端屬性

原因如下:

作服務的提供者,比服務使用方更清楚服務效能引數,如呼叫的超時時間,合理的重試次數,等等

在provider配置後,consumer不配置則會使用provider的配置值,即provider配置可以作為consumer的預設值。否則,consumer會使用consumer端的全域性設定,這對於provider不可控的,並且往往是不合理的

ps: 配置的覆蓋規則:1) 方法級配置別優於介面級別,即小scope優先 2) consumer端配置 優於 provider配置 優於 全域性配置,最後是dubbo hard code的配置值(見配置文件)

在provider可以配置的consumer端屬性有:

timeout,方法呼叫超時

retries,失敗重試次數,預設是2(表示加上第一次呼叫,會呼叫3次)

loadbalance,負載均衡演算法(有多個provider時,如何挑選provider呼叫),預設是隨機(random)。還可以有輪訓(roundrobin)、最不活躍優先(leastactive,指從consumer端併發呼叫最好的provider,可以減少的反應慢的provider的呼叫,因為反應更容易累積併發的呼叫)

actives,消費者端,最大併發呼叫限制,即當consumer對乙個服務的併發呼叫到上限後,新呼叫會wait直到超時。在方法上配置(dubbo:method )則併發限制針對方法,在介面上配置(dubbo:service),則併發限制針對服務。

下圖為客戶端超時配置

解決dubbo介面超時問題

直接上 利用有返回結果的futuretask解決 autowired qualifier dataexecutor private threadpooltaskexecutor taskexecutor private set getusertags string productno general...

doubb超時 dubbo超時

使用dubbo進行遠端呼叫的過程中,需要設定遠端呼叫的超時間.超時時間分別可以在服務的提供者配置中設定,也可以在服務呼叫這配置中設定.在puhui 業務系統中服務提供者可以如下配置 超時時間的單位是毫秒.在puhui業務系統中服務呼叫者可以如下配置 兩種超時時間分別代表的意義 1.服務提供者的tim...

Dubbo超時配置

dubbo是阿里開源的分布式遠端呼叫方案 rpc 由於網路或服務端不可靠,會導致呼叫出現一種不確定的中間狀態 超時 為了避免超時導致客戶端資源 執行緒 掛起耗盡,必須設定超時時間。provider可以配置的consumer端主要屬性有timeout retries loadbalance activ...