阿里面試:Dubbo負載均衡有哪些策略?

ITPUB社群發表於2024-01-30

來源:mikechen的網際網路架構


Dubbo是一款高效能的Java RPC框架,它提供了多種負載均衡策略,一般大廠也愛問:Dubbo常用的負載均衡策略有哪些?下面我來詳解


1.隨機(Random)

隨機選擇一個可用的服務提供者進行請求排程,如下圖所示:

阿里面試:Dubbo負載均衡有哪些策略?

每個服務提供者的權重不考慮,具有相同的被選中機率。

配置如下;

<dubbo:referenceid="myService"interface="com.example.MyService"loadbalance="random"/>

 

2.輪詢(Round Robin)

按照輪詢的方式依次選擇可用的服務提供者,如下圖所示:

阿里面試:Dubbo負載均衡有哪些策略?

每個服務提供者的權重不考慮,按順序依次選擇。

配置如下:

<dubbo:referenceid="myService"interface="com.example.MyService"loadbalance="roundrobin"/>

 適用於伺服器效能相近,沒有特別要求的場景。


3.最少連線(Least Connection

最少連線策略:將新的請求分配給當前連線數最少的伺服器。

如下圖所示:

阿里面試:Dubbo負載均衡有哪些策略?

這樣做可以確保負載更均衡,因為連線數較少的伺服器有更多的處理能力來處理新的請求。

 

4.一致性雜湊(Consistent Hash)

將請求的引數或標識進行雜湊計算,選擇雜湊值最接近服務提供者的節點進行排程。

如下圖所示:

阿里面試:Dubbo負載均衡有哪些策略?

配置如下:

<dubbo:referenceid="myService"interface="com.example.MyService"loadbalance="consistenthash"><dubbo:parameterkey="hash.arguments"value="param1,param2"/></dubbo:reference>

 適合於:相同IP地址的請求總是被分發到同一個伺服器上的場景。


5.加權隨機(Weighted Random)

為每個服務提供者分配一個權重值,按照權重比例選擇服務提供者進行請求排程,權重越高的服務提供者被選中的機率越大。

配置如下:

<dubbo:referenceid="myService"interface="com.example.MyService"loadbalance="random"><dubbo:parameterkey="weights"value="2,1,1"/></dubbo:reference>

 

6.加權輪詢(Weighted Round Robin)

為每個服務提供者分配一個權重值,按照權重比例依次選擇服務提供者進行請求排程,權重越高的服務提供者被選中的次數越多。

配置如下:

<dubbo:referenceid="myService"interface="com.example.MyService"loadbalance="roundrobin"><dubbo:parameterkey="weights"value="2,1,1"/></dubbo:reference>

適用於伺服器效能不均衡的場景,可以根據伺服器效能設定不同的權重,充分利用效能較高的伺服器處理更多的請求。

對於擁有不同硬體配置或處理能力的伺服器叢集,加權輪詢可以更好地分配負載。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024420/viewspace-3005707/,如需轉載,請註明出處,否則將追究法律責任。

相關文章