前面提到服务消费者从服务配置中心获取到服务的地址列表后,需要选取其中一台来发起RPC调用。如何选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。
- 轮询法
轮询很容易理解,将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端每一台服务器,而不关心服务器实际的连接数和当前的系统负载。 - 随机法
通过系统随机函数,根据后端服务器列表的大小值来随机选取其中一台进行访问。每台被选取的概率是一样的,相当于轮询的效果 - 源地址哈希法
源地址哈希的思想是获取客户端访问的IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是要访问的服务器的序号。采用哈希法进行负载均衡,同一ip地址的客户端,当后端服务器列表不变时,它每次都会被映射到同一台后端服务器进行访问。根据此特性可以在服务消费者与服务提供者之间建立有状态的session会话。 - 加权轮询法
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此他们的抗压能力也不尽相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请求,而低配置、负载高的机器,则给其分配较低的权重,降低其系统负载,加权轮询能很好的处理这一问题,并将请求顺序按照权重分配到后端。 - 加权随机法
与加权轮询法相似,加权随机法也根据后端服务器不同的配置和负载情况,配置不同的权重。不同的是,它是按照权重随机选取服务器而不是顺序。 - 最小连接数法
。。。
网友评论