加權輪詢和加權隨機演算法

2022-02-01 01:45:41 字數 1111 閱讀 3999

今天在看《大型分布式**架構設計與實踐》一書中, 看到了一種比較簡單的加權的演算法, 在這裡記下來:

var serverweightmap = new dictionary();

serverweightmap.add("192.168.1.100", 1);

serverweightmap.add("192.168.1.101", 1);

// 權重為 4

serverweightmap.add("192.168.1.102", 4);

serverweightmap.add("192.168.1.103", 1);

serverweightmap.add("192.168.1.104", 1);

// 權重為 3

serverweightmap.add("192.168.1.105", 3);

serverweightmap.add("192.168.1.106", 1);

// 權重為 2

serverweightmap.add("192.168.1.107", 2);

serverweightmap.add("192.168.1.108", 1);

serverweightmap.add("192.168.1.109", 1);

serverweightmap.add("192.168.1.110", 1);

int pos = 0;

// 加權輪詢

public static string getroundrobin()

var ip = string.empty;

lock(pos)

return ip;

}// 加權隨機

public static string getrandom()

var randpos = convert.toint32((new random()).next(iplist.count));

var ip = iplist[randpos];

return ip;

}

上面的兩個方法中, 就處理伺服器 ip 位址的時候, 根據權重的不同, 在 ip  列表中重複新增 ip 值,權重越大, ip 列表中 ip 值的重複數就越多。

加權隨機演算法

本文參考 加權平均演算法一般應用於某個場景,有乙個集合s,裡面有a,b,c,d這四項。這時我們想隨機從中抽取一項,但是抽取的概率不同。比如我們希望抽到a的概率是50 抽到b和c的概率是20 d的概率是10 一般來說,我們可以給各項附乙個權重,抽取的概率正比於這個權重。那麼上述集合就成了 方法一 然後...

加權隨機演算法

public class weightedrandom 計算權重總和 int totalweights 0 for int i 0 i list.count i 隨機賦值權重 system.random ran new system.random getrandomseed getrandomsee...

負載均衡演算法 加權輪詢

輪詢演算法沒有考慮每台伺服器的處理能力,實際情況是每台伺服器的配置 安裝的業務應用等不同,其處理能力會不一樣。所以,加權輪詢演算法的原理就是 根據伺服器的不同處理能力,給每個伺服器分配不同的權值,使其能接受相應權值數的服務請求。首先看乙個簡單的nginx負載均衡配置。按照上述配置,nginx每收到7...