写点什么

常见的静态负载均衡算法

用户头像
HQ数字卡
关注
发布于: 1 小时前

静态负载均衡算法

轮询(Round Robin)法

轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。


使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的代价性能也是相当大的。


为了保证 pos 变量的并发互斥,引入了重量级悲观锁 synchronized,将会导致该轮询代码的并发吞吐量明显下降。


轮询法适用于机器性能相同的服务,一旦某台机器性能不好,极有可能产生木桶效应,性能差的机器扛不住更多的流量。

随机法

通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。


由概率概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到后台的每一台服务器,也就是轮询法的效果。


同样地,它也不适用于机器性能有差异的分布式系统。

随机轮询法

所谓随机轮询,就是将随机法和轮询法结合起来,在轮询节点时,随机选择一个节点作为开始位置 index,此后每次选择下一个节点来处理请求,即(index+1)% size。


这种方式只是在选择第一个节点用了随机方法,其他与轮询法无异,缺点跟轮询一样。

源地址哈希法

源地址哈希法的思想是根据服务消费者请求客户端的 IP 地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。


采用源地址哈希法进行负载均衡,相同的 IP 客户端,如果服务器列表不变,将映射到同一个后台服务器进行访问。


该方法适合访问缓存系统,如果为了增强缓存的命中率和单调性,可以用一致性哈希算法。

加权轮询(Weight Round Robin)法

不同的后台服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不一样。


跟配置高、负载低的机器分配更高的权重,使其能处理更多的请求,而配置低、负载高的机器,则给其分配较低的权重,降低其系统负载,加权轮询很好的处理了这一问题,并将请求按照顺序且根据权重分配给后端。


Nginx 的负载均衡默认算法是平滑加权轮询算法。


发布于: 1 小时前阅读数: 3
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
常见的静态负载均衡算法