常见的负载均衡策略
轮询(Round Robin)
轮询的实现⽅式⽐较简单,就是将请求以此分发到后端服务器中,将所有的请求均匀分配,均匀分配的坏处是通常后台服务器性能有差异,有时候希望性能较好的服务器可以多承担些请求,该策略⽆法满⾜需求。这个不适合对长连接和命中率有要求的场景。
加强轮询(Weighted Round Robin)
这种策略是对轮询策略的优化,对每个后端服务器设置⼀个权重值,根据权重值决定请求的分配⽐例,这种做法解决了轮询策略的不⾜,但是该权限值需要⼿动配置,没有办法⾃动动态调节,同样不适合对长连接和命中率有要求的场景。
hash算法
通过ip url等信息计算hash值,然后对服务器的数量取模,相同的请求会请求到同⼀个后端服务器中。该算法⽆法解决热点请求,会把某个时间段的热点请求路由到某个单机上,造成雪崩效应,同时在扩中和节点宕机时发⽣命中率急剧降低的问题(hash算法导致),该策略适合维护长连接和提⾼命中率。
随机Random
根据随机算法,将请求随机分配到后端服务器中,请求的均匀请求依赖于随机算法,该实现⽅式较为简单,常常可以配合处理⼀些极端的请求,例如热点请求情况。不适合对命中率有要求的场景。
⼀致性hash算法
对hash 算法的优化,可以有效的解决宕机和扩充造成的命中率急剧降低的问题。
最⼩连接数 Least Connection
通过活动来估计后端服务器的负载,把请求分配给活动连接数最⼩的后端服务器,算法⽐较智能,但是需要额外的资源维护后端服务器的连接列表。
加权最⼩连接数 Weighted Least Connection
对Least Connection策略的优化,通过加权的⽅式优化Least Connection的性能,对性能较好的后端服务器设置较⾼的权重,承担更多的链接负载。
最短响应时间 Least Response Time
该策略的意思就是将请求分配给平均响应时间最短的后端服务器,平均时间可以通过ping或者正常的响应时间来获取 。后⾯会逐⼀对各个常见的负载均衡策略的实现做介绍。
因篇幅问题不能全部显示,请点此查看更多更全内容