Dubbo超時配置

2021-07-29 20:21:50 字數 1753 閱讀 1985

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

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

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

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

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

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

dubbo消費端

全域性超時配置

timeout="5000" />
指定介面以及特定方法超時配置

timeout="2000">

name="sayhello"

timeout="3000" />

reference>

dubbo服務端

全域性超時配置

timeout="5000" />
指定介面以及特定方法超時配置

inte***ce="com.foo.barservice"

timeout="2000">

name="sayhello"

timeout="3000" />

dubbo:provider>

dubbo協議超時實現使用了future模式,主要涉及類dubboinvoker,responsefuture, defaultfuture。

responsefuture.get()在請求還未處理完或未到超時前一直是wait狀態;響應達到後,設定請求狀態,並進行notify喚醒。

public object get() throws remotingexception 

public object get(int timeout) throws remotingexception

if (! isdone())

}} catch (interruptedexception e) finally

if (! isdone())

}return returnfromresponse();

}

public

static

void

received(channel channel, response response) else

} finally

}private

void

doreceived(response res)

} finally

if (callback != null)

}

Dubbo超時配置

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

Dubbo超時配置

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

doubb超時 dubbo超時

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