Dubbo(七)限流之actives引數

2022-06-26 21:24:21 字數 1239 閱讀 7335

actives引數隸屬於標籤dubbo:reference,是客戶端獨有的引數。它的官方定義是「每服務消費者每服務每方法最大併發呼叫數」。

示例**在

v0.0.7增加了乙個類來測試apisleepconsumertwothreads來測試引數actives。**如下:

public class apisleepconsumertwothreads 

public void run() }

public static void main(string args) catch (interruptedexception e)

try catch (interruptedexception e)

}}

apisleepconsumertwothreads啟動後,會建立兩條執行緒,執行緒啟動後會呼叫介面greetingservice.sleepms。

我們先不設定actives,並設定connections為1,也即是只和服務端保持一條連線,配置如下:

啟動apisleepconsumertwothreads,console會列印:

[1] begin:1605411200246 

[2] begin:1605411200246

[1] end :1605411203313 eclapsed: 3067ms

[2] end :1605411203313 eclapsed: 3067ms

可見[1605411200246,1605411203313]和[1605411200246,1605411203313]是重疊的,也就是說即便是只有一條連線,客戶端的請求也會並行地執行。

接下來我們設定actives為1(最大並行數為1),並設定connections為2,也即是和服務端保持兩條連線,配置如下:

啟動apisleepconsumertwothreads,console會列印:

[1] begin:1605411404151 

[2] begin:1605411404151

[2] end :1605411407213 eclapsed: 3062ms

[1] end :1605411410220 eclapsed: 6069ms

可見兩個執行緒並不是並行地請求服務端,而是序列地訪問,即使是和服務端有多條連線的情況下。

Dubbo服務限流

為了防止某個消費者的qps或是所有消費者的qps總和突然飆公升而導致的重要服務的失效,系統可以對訪問流量進行控制,這種對集群的保護措施稱為服務限流。dubbo中能夠實現服務限流的方式較多,可以劃分為兩類 直接限流與間接限流 該屬性僅能設定在提供者端。可以設定為介面級別,也可以設定為方法級別。限制的是...

dubbo熔斷限流

常見的限流演算法有 令牌桶 漏桶。計數器也可以進行粗暴限流實現。dubbo呼叫模型 連線呼叫圖 呼叫時關鍵引數影響 引數名 作用範圍 預設值說明 備註actives consumer 0每服務消費者每服務每方法最大併發呼叫數 0表示不限制 connections consumer 對每個提供者的最大...

Dubbo(三)限流之executes引數

executes引數的官方定義是 服務提供者每服務每方法最大可並行執行請求數 那麼現在的問題是假設executes 1,同時有兩個請求達到伺服器,第乙個請求自然能處理,但是第二個請求會怎麼處理呢?我通過實驗發現dubbo的客戶端會直接報錯。可以推理出dubbo並不會用佇列的方式將第二個請求快取起來等...