dubbo負載演算法之最小活躍度加權演算法

2021-10-25 07:33:04 字數 702 閱讀 7176

最小活躍數負載均衡:每個服務提供者對應乙個活躍數 active。初始情況下,所有服務提供者活躍數均為0。每收到乙個請求,活躍數加1,完成請求後則將活躍數減1。在服務執行一段時間後,效能好的服務提供者處理請求的速度更快,因此活躍數下降的也越快,此時這樣的服務提供者能夠優先獲取到新的服務請求、這就是最小活躍數負載均衡演算法的基本思想。除了最小活躍數,leastactiveloadbalance 在實現上還引入了權重值;在乙個服務提供者集群中,有兩個效能優異的服務提供者。某一時刻它們的活躍數相同,此時 dubbo 會根據它們的權重去分配請求,權重越大,獲取到新請求的概率就越大。如果兩個服務提供者權重相同,此時隨機選擇乙個即可;

在分析該演算法的時候一定要區分最小活躍度和權重是分開的兩個概念:先找到最小的活躍度的invokers然後才根據權重負載

我們來分析一下具體演算法

package com.alibaba.dubbo.rpc.cluster.loadbalance;

public class leastactiveloadbalance extends abstractloadbalance

protected invokerdoselect(list> invokers, url url, invocation invocation) {

//獲取所有invoker列表

int length = invokers.size();

演算法之最小生成樹

1.問題描述 利用貪心演算法設計策略構造乙個無向連通帶權圖的最小生成樹。最小生成樹 設g v,e 是無向連通帶權圖,即乙個網路。e中每條邊 v,w 的權為 c v w 包含g 所有頂點的樹且該生成樹各邊權的總和最小 即耗費最小 則稱該生成樹為 g的最小生成樹。設g v,e 是無向連通帶權圖,頂點集v...

演算法之最小路徑和

給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。class solution if grid.leng...

演算法題 二 之 最小區間

你有 k 個公升序排列的整數列表。找到乙個最小區間,使得 k 個列表中的每個列表至少有乙個數包含在其中。我們定義如果 b a d c 或者在 b a d c 時 a c,則區間 a,b 比 c,d 小。例如 輸入 4,10,15,24,26 0,9,12,20 5,18,22,30 輸出 20,24...