首页 > 其他分享 >RoundRobin

RoundRobin

时间:2022-10-03 07:55:05浏览次数:45  
标签:轮询 调度 算法 权值 服务器 RoundRobin cw

RoundRobin LoadBalance
Round-Robin既是轮询算法,是按照公约后的权重设置轮询比率,即权重轮询算法(Weighted Round-Robin) ,它是基于轮询算法改进而来的。这里之所以写RoundRobin是为了跟Dubbo中的内容保持一致。

轮询调度算法的原理是:每一次把来自用户的请求轮流分配给内部中的服务器。如:从1开始,一直到N(其中,N是内部服务器的总个数),然后重新开始循环。

该算法的优点:

其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

该算法的缺点:

轮询调度算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。

所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。但是,在实际情况中,可能并不是这种情况。由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

权重轮询调度算法流程
假设有一组服务器S = {S0, S1, …, Sn-1},W(Si)表示服务器Si的权值,一个指示变量i表示上一次选择的服务器,指示变量cw表示当前调度的权值,max(S)表示集合S中所有服务器的最大权值,gcd(S)表示集合S中所有服务器权值的最大公约数。变量i初始化为-1,cw初始化为零。其算法如下:

while (true) {
	i = (i + 1) mod n;
	if (i == 0) {
		cw = cw - gcd(S);
	if (cw <= 0) {
		cw = max(S);
	if (cw == 0)
		return NULL;
	}
}
if (W(Si) >= cw)
	return Si;
}

image
由于权重轮询调度算法考虑到了不同服务器的处理能力,所以这种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。所以,在实际应用中比较常见。

标签:轮询,调度,算法,权值,服务器,RoundRobin,cw
From: https://www.cnblogs.com/ukzq/p/16749953.html

相关文章