数据结构和算法 负载均衡算法

Posted hpzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法 负载均衡算法相关的知识,希望对你有一定的参考价值。

目录

  负载均衡的介绍

  无状态调度-轮询法

  无状态调度-源地址哈希法

  无状态调度-轮询|随机加权法

  有状态调度-动态链接法

 

负载均衡的介绍

 

在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理,消费者通过查询服务配置中心,获取到服务的地址列表,需要选中其中一台发起RPC调用(关于如何选中,取决于复制均衡算法)

无状态调度:不管后台服务器的具体的情况按照某个确定规则进行操作

有状态调度:根据后台服务器的具体进行操作

 

无状态调度-轮询法

 

定义 将请求按顺序轮流分配到后台服务器上,均衡的对每一台服务器,而不关心服务器实际的连接和当前的系统负载

优点 算法简单,无需记录当前所有连接的状态

应用场景 服务器组中所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况

 

无状态调度-随机法

 

定义 通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台返回(或者给后台服务器标号,随机选取一台)

注意 随着调用量增大,实际效果接近轮询法

 

无状态调度-源地址哈希法

 

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

优点 相同的IP客户端,如果服务器列表不变,将映射到同一个后台服务器进行访问

 

无状态调度-轮询|随机加权法

 

定义 不同的后台服务可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不一样,配置高,负载低的机器分配更高的权重,使其能处理更多的请求

 

有状态调度-动态链接法

 

定义 根据后端服务器当前的连接情况,动态的选取其中当前积压连接数最小的一台服务器来处理当前请求,尽可能的提高后台服务器利用率,将负载合理地分流到每一台服务器

注意 可以根据"最小连接","响应时间" 或其它办法来动态调节

 



以上是关于数据结构和算法 负载均衡算法的主要内容,如果未能解决你的问题,请参考以下文章

Ribbon负载均衡算法

Nginx负载均衡常见的算法

Nginx的负载均衡

手写负载均衡算法

分布式系统常见负载均衡算法

分布式 | 常见的负载均衡算法