基础之负载均衡算法简介
负载均衡算法的基础知识记录。
负载均衡算法有以下几种:
- 轮询(Round Robin)
- 加权轮询(Weight Round Robin)
- 随机(Random)
- 加权随机(Weight Random)
- 源地址哈希(Hash)
- 一致性哈希(ConsistentHash)
- 最小连接数(Least Connections)
轮询(Round Robin)
按照顺序将请求轮流的分配到服务器上。不关心服务器实际负载以及服务器的链接数。
优点:请求均衡的分配到每台服务器。
缺点:
- 由于不关心服务器的负载,可能会导致请求积压到处理能力比较慢的服务器上。
- 为了轮询服务器,还需要维护一个全局变量,用来表示选择的服务器的索引,这样会涉及到共享变量的竞争问题,导致并发吞吐量下降。
加权轮询(Weight Round Robin)
轮询(Round Robin)不关心服务器的负载,可能会导致请求积压在处理能力比较慢的服务器上。加权轮询可以解决该问题。
加权轮询给配置高、负载低的服务器配置更高的权重,给配置低、负载高的服务器较低的权重,这样高权重的服务器处理更多的请求,低权重的服务器处理较少的请求。
随机(Random)
随机选择服务器进行请求的处理,调用量越大,请求分布越均匀。
加权随机(Weight Random)
也是随机选择服务器进行请求处理,只不过会根据不同服务器设置不同权重,按照权重随机请求服务器。
源地址哈希(Hash)
根据客户端的ip地址(也可以是其他参数),通过哈希函数计算一个数值,然后使用该数值对服务器列表大小进行取模运算,就能得到要访问的服务器。
优点:同一个ip请求总能被分配到同一台服务器。
缺点:如果服务器上线或者下线,导致服务器列表发生变化,会导致前后请求不能到同一台服务器上,如果是有状态的请求,可能会导致状态丢失。
一致性哈希(ConsistentHash)
和源地址哈希算法基本一样,只不过一致性哈希会提供虚拟节点,如果服务器列表发生变化,只影响一小部分服务器映射发生变化,不会产生剧烈变动,而源地址哈希可能会导致所有服务器映射都发生变化。
最小连接数(Least Connections)
最小连接数,或者是最少活跃调用(Least Active),动态的选择连接数最少的服务器进行处理请求,尽可能高的提升服务器利用率。