如果我有一些服务器:192.168.100.1、192.168.100.2、192.168.100.3、192.168.100.4...
它们的权重为:5,1,2,3
我想实现负载均衡,但是如何使用C#实现加权循环?
假设你有服务器a
, b
, c
, d
。并且你有相应的权重5
, 1
, 2
, 3
。您可以通过以下方式进行加权循环:
Random rand = new Random(seed);
void processRequest(Request r){
// assume rand.next() returns a uniformly distributed integer >= 0
int i = rand.next() % 11; // 11 is sum of weights
if(i <= 4) // process r with server a
else if(i == 5) // process r with server b
else if(i <= 7) // process r with server c
else // process r with server d
}
rand.next() % 11
返回范围内均匀分布的整数[0, 10]
(包括的)。我们与服务器处理请求a
对于五个可能的值[0, 4]
。我们与服务器处理请求b
仅针对一个可能的值5
等等。
请特别注意您使用的特定随机方法和种子值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)