负载均衡之权重轮询调度算法
来源:互联网 发布:proteus isis仿真软件 编辑:程序博客网 时间:2024/05/21 19:23
http://blog.csdn.net/lululove19870526/article/details/53101490
http://colobu.com/2016/12/04/smooth-weighted-round-robin-algorithm/
负载均衡之权重轮询调度算法
一、负载均衡
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器。如果nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,这就是负载均衡
二、nginx负载均衡策略之round_robin
round_robin策略做为默认策略:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
例如
功能:nginx在用作反向代理服务器时,对于后端的服务器可以采用两种分流策略:加权分流和ip hash。nginx默认采用round_robin加权算法:对于权重较高的机器,被选中的概率大,对于权重相同的机器,则采用轮询方式。上面的这个配置,如果的3个请求,则会有1个请求分发到10.1.1.107服务器上,2个请求分发到10.1.1.132服务器上。
三、轮询调度算法(Round-Robin Scheduling)
轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。
轮询调度算法假设所有服务器的处理性能都相同,不关心每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。所以此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
四、权重轮询调度算法(Weighted Round-Robin Scheduling)
上面所讲的轮询调度算法并没有考虑每台服务器的处理能力,在实际情况中,可能并不是这种情况。由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。
1.权重轮询调度算法流程
假设有一组服务器S = {S0, S1, …, Sn-1},W(Si)表示服务器Si的权值,一个指示变量i表示上一次选择的服务器,指示变量cw表示当前调度的权值,max(S)表示集合S中所有服务器的最大权值,gcd(S)表示集合S中所有服务器权值的最大公约数。变量i初始化为-1,cw初始化为零。其算法如下
2.Java代码实现
运行结果:
server 192.168.191.8 weight=8
server 192.168.191.8 weight=8
server 192.168.191.8 weight=8
server 192.168.191.8 weight=8
server 192.168.191.4 weight=4
server 192.168.191.8 weight=8
server 192.168.191.4 weight=4
server 192.168.191.8 weight=8
server 192.168.191.2 weight=2
server 192.168.191.4 weight=4
server 192.168.191.8 weight=8
server 192.168.191.1 weight=1
server 192.168.191.2 weight=2
server 192.168.191.4 weight=4
server 192.168.191.8 weight=8
- 负载均衡之权重轮询调度算法
- 负载均衡之权重轮询调度算法
- LVS之二:负载均衡调度算法
- 负载均衡调度算法
- 负载均衡调度算法
- 负载均衡调度算法
- 负载均衡调度算法
- 权重轮询调度算法
- 负载均衡之加权轮询算法
- 负载均衡之轮询算法
- 负载均衡算法之轮询
- 负载均衡调度算法大全
- 负载均衡调度算法大全
- 负载均衡调度算法大全
- 负载均衡调度算法大全
- 负载均衡调度算法大全
- 负载均衡调度算法大全
- 权重轮询调度算法 java版本
- poj3069(贪心)
- Java修饰符访问权限_动力节点Java学院整理
- 机房---宏观把控
- Spring,JOTM,Mybatis多数据源动态配置和使用
- SSH整合
- 负载均衡之权重轮询调度算法
- 使用jsp作为视图模板&常规部署
- BZOJ 1003 [ZJOI2006]物流运输 SPFA+动态规划
- 欢迎使用CSDN-markdown编辑器
- JAVA基础--重载与重写,接口与抽象类,构造方法的作用,代码块的分类
- 2017年09月23日普级组 环
- syder 中使用python
- 十三种寻址的整理
- Javac编译原理