「算法」权重轮询调度算法

点击上方"java全栈技术"关注,每天学习一个java知识点,喜欢的也可以关注WX号"ITeye"

nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器。如果nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,这就是负载均衡。

由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

权重轮询调度算法流程

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

「算法」权重轮询调度算法

Java代码实现

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法

「算法」权重轮询调度算法


分享到:


相關文章: