Skip to main content

2 posts tagged with "负载均衡"

View All Tags

· 5 min read

常见的负载均衡算法

在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,消费者 通过查询服务配置中心,获取到服务到地址列表,需要选取其中一台来发起RPC远程调用。如何 选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。负 载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮 询法、加权随机法、最小连接法等,应根据具体的使用场景选取对应的算法。

1.轮询(Round Robin)法

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

2.随机法

通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。由概率概 率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到后台的每一 台服务器,也就是轮询法的效果。

3.源地址哈希法

源地址哈希法的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈 希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序 号。采用源地址哈希法进行负载均衡,相同的IP客户端,如果服务器列表不变,将映射到同一个 后台服务器进行访问。

4.加权轮询(Weight Round Robin)法

不同的后台服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不一 样。跟配置高、负载低的机器分配更高的权重,使其能处理更多的请求,而配置低、负载高的机 器,则给其分配较低的权重,降低其系统负载,加权轮询很好的处理了这一问题,并将请求按照 顺序且根据权重分配给后端。

5.加权随机(Weight Random)法

加权随机法跟加权轮询法类似,根据后台服务器不同的配置和负载情况,配置不同的权重。 不同的是,它是按照权重来随机选取服务器的,而非顺序。

6.最小连接数法

前面我们费尽心思来实现服务消费者请求次数分配的均衡,我们知道这样做是没错的,可以 为后端的多台服务器平均分配工作量,最大程度地提高服务器的利用率,但是,实际上,请求次 数的均衡并不代表负载的均衡。因此我们需要介绍最小连接数法,最小连接数法比较灵活和智 能,由于后台服务器的配置不尽相同,对请求的处理有快有慢,它正是根据后端服务器当前的连 接情况,动态的选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能的提高后台 服务器利用率,将负载合理的分流到每一台服务器。