LB:load balance 负载均衡算法 2 years ago
常见的负载均衡算法
在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,消费者 通过查询服务配置中心,获取到服务到地址列表,需要选取其中一台来发起RPC远程调用。如何 选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。负 载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮 询法、加权随机法、最小连接法等,应根据具体的使用场景选取对应的算法。
### 1.轮询(Round Robin)法
轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不 关心服务器实际的连接数和当前的系统负载。
### 2.随机法
通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。由概率概 率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到后台的每一 台服务器,也就是轮询法的效果。
3.源地址哈希法
源地址哈希法的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈 希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序 号。采用源地址哈希法进行负载均衡,相同的IP客户端,如果服务器列表不变,将映射到同一个 后台服务器进行访问。
4.加权轮询(Weight Round Robin)法
不同的后台服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不一 样。跟配置高、负载低的机器分配更高的权重,使其能处理更多的请求,而配置低、负载高的机 器,则给其分配较低的权重,降低其系统负载,加权轮询很好的处理了这一问题,并将请求按照 顺序且根据权重分配给后端。
5.加权随机(Weight Random)法
加权随机法跟加权轮询法类似,根据后台服务器不同的配置和负载情况,配置不同的权重。 不同的是,它是按照权重来随机选取服务器的,而非顺序。
### 6.最小连接数法
前面我们费尽心思来实现服务消费者请求次数分配的均衡,我们知道这样做是没错的,可以 为后端的多台服务器平均分配工作量,最大程度地提高服务器的利用率,但是,实际上,请求次 数的均衡并不代表负载的均衡。因此我们需要介绍最小连接数法,最小连接数法比较灵活和智 能,由于后台服务器的配置不尽相同,对请求的处理有快有慢,它正是根据后端服务器当前的连 接情况,动态的选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能的提高后台 服务器利用率,将负载合理的分流到每一台服务器。