分布式系统-负载均衡算法

136 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 18 天,点击查看活动详情

1 前言

在分布式系统中,系统之间的调用选择依赖于负载均衡算法,在本文中,将介绍分布式系统框架中常用的负载均衡算法。

2 负载均衡算法

2.1 轮询算法

轮询方法最为简单,就是将请求轮流地分配到后端服务器上,请求将均衡地分发到每一台后端服务器上,不会关心服务器实际的连接数和当前的负载情况。

轮询算法是比较简单的算法,也比较容易实现,对于硬件资源相同的服务器可以很好的实现请求,但是如果服务器的硬件资源不同,则会出现分布不均的问题。

2.2 加权轮询算法

这个算法是对轮询算法的优化,考虑到了服务器的配置和服务可能不尽相同,因此其抗压能力也是不同的。因此给配置高的的机器更高的权重,配置低的给较低的权重,这样就可以做到能者多劳,而且请求是按照顺序和权重分配到后端服务器。

2.3 随机算法

随机算法就是根据随机的原则,根据后端服务器的列表顺序值随机选择一个进行访问,根据概率只是可以知道,当客户端调用服务器的此时增加,其实际效果会越来越平均分配到后端服务器上,这种算法的结果就约接近轮询算法。

2.4 加权随机算法

加权随机算法和加权轮询类似,也是按照随机的方式请求到后端服务器,但是会对某些服务器进行加权处理,权重越高则被访问到的次数越大。

2.5 源地址 hash 算法

源地址 hash 的思想是获取客户端的 ip 地址,通过 hash 函数可以计算得到一个值,改数值对服务器的大小进行取模运算,得到的结果便是需要访问的服务器序号,源地址 hash 算法导致的结果就是同一个 ip 的客户端请求会打在同一个后端服务器上,这样的话会导致请求处理的不均衡,因为不同客户端的调用量可能是不均衡的。

2.6 最小连接数算法

最小连接数算法比较灵活也比较只能,由于后端服务器的配置不尽相同,所以处理的速度有快有慢,它是根据后端服务器当前的连接情况,动态的选择当前挤压连接数量最少的服务器来处理当前请求,尽可能的提高后端服务器的利用率,将流量公正的分配到每一台服务器上。

3 总结

在本文中主要介绍了一些常用的负载均衡算法,笔者认为最佳的负载均衡策略就是最小连接数算法,这样可以更好的处理客户端的请求,充分利用好服务器的资源。