汇总常见的负载均衡算法及其实现原理。
负载均衡算法名 | 实现原理 |
---|---|
轮询(Round Robin) | 将请求按照顺序分配到后端服务器上,需要注意的是,实现过程中需要对地址列表下标position进行同步,即需要记录当前下标在数组哪。 |
随机(Random) | 随机返回地址列表的下标及对应地址。 |
源地址哈希法(Hash) | 获取访问IP地址,得到其哈希值,然后与地址列表大小进行取模运算,得到地址列表的序号。这种算法有个特性,及请求IP不变时,其对应的服务地址也不会变,适合需要维护session的场景。 |
加权轮询(Weight Round Robin) | 考虑到服务器性能的差异,有的性能高(抗压力强),可以多分配一些请求给它。因此在设计算法时,可以将权重高的服务地址在地址列表中多添加几次,这样扩充了待选择的地址列表的大小,同时也增加了高权重服务器被选择到的概率。 |
加权随机(Weight Random) | 与加权轮询算法异曲同工,将权重高的服务地址在地址列表中多添加几次。 |
最小连接数(Least Connections) | 依据每台机器当前的请求量来分配请求,有新请求过来,优先分配给请求量小的机器。这种实现就比较复杂,需要感知每台机器的时时链接数。 |