负载均衡实现方式

Posted 机械猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡实现方式相关的知识,希望对你有一定的参考价值。

负载均衡(Load Balance),其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行。在负载均衡中可以分为两种方式,硬件方式与软件方式。硬件负载均衡主要是有F5、思科,软件方式(不区分四层与七层负载均衡)主要包括http重定向、DNS重定向、反向代理(如nginx)、NAT转换等。

WRR算法

假设有3台机器a、b、c,权重分别为5,1,1, WRRWeighted Round Robin算法实现方式是:每次选出权重最大的机器,其权重减1,直到权重全部为0。然后按照生成的序列循环。

                           


最终得到的循环序列为:a,a,a,a,a,b,c,虽然此时负载是均衡的(5:1:1),但是前五次访问都打到a机器,b和c机器是空闲的。理想状态是在均衡的情况下让访问次数也均衡分布,于是就有了SWRR算法(Smooth Weighted Round Robin),平滑加权轮训调度算法。

SWRR算法

对于上面的案例,SWRR算法策略是:

1、从权重中选出最大的,减去总权重

2、然后再给每个权重加上自身权重初始值

3、再次轮训,直到权重为0,确定序列



得到的最终循环序列是:a,a,b,a,c,a,a,访问效果比WRR算法更优。

但是SWRR算法在大量并发来临的时候,第一次始终会选择a机器,就有可能导致a机器瘫痪。解决方案为:对于生成的序列随机选择一个开始,比如有5台负载的机器,都生成了a,a,b,a,c,a,a的序列,但是每台机器不完全按照这个序列轮训,而是随机选择一个开始,那生成的序列就可能变成下面这样:



这样能降低流量突增时第一台机器被打瘫痪的概率。


以上是关于负载均衡实现方式的主要内容,如果未能解决你的问题,请参考以下文章

web实现负载均衡的几种实现方式

亿级Web系统负载均衡几种实现方式

Web负载均衡的几种方式

负载均衡实现方式

Web负载均衡实现方式(转)

使用Nginx实现负载均衡