负载均衡算法居然有这么多种!!!负载均衡算法总结

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法,另外还可以自定义负载均衡算法。

静态负载均衡算法

  1. 轮询(Round Robin):服务器按照顺序循环接受请求。
  2. 随机(Random):随机选择一台服务器接受请求。
  3. 权重(Weight):给每个服务器分配一个权重值,根据权重来分发请求到不同的机器中。
  4. IP哈希(IP Hash):根据客户端IP计算Hash值取模访问对应服务器。
  5. URL哈希(URL Hash):根据请求的URL地址计算Hash值取模访问对应服务器。
  6. 一致性哈希(Consistent Hash ):采用一致性Hash算法,相同IP或URL请求总是发送到同一服务器。

动态负载均衡算法

  1. 最少连接数(Least Connection):将请求分配给最少连接处理的服务器。
  2. 最快响应(Fastest Response):将请求分配给响应时间最快的服务器。
  3. 观察(Observed):以连接数和响应时间的平衡为依据请求服务器。
  4. 预测(Predictive):收集分析当前服务器性能指标,预测下个时间段内性能最佳服务器。
  5. 动态性能分配(Dynamic Ratio-APM):收集服务器各项性能参数,动态调整流量分配。
  6. 服务质量(QoS):根据服务质量选择服务器。
  7. 服务类型(ToS): 根据服务类型选择服务器。

自定义负载均衡算法

  1. 灰度发布:平滑过渡的发布方式,可以降低发布失败风险,减少影响范围,发布出现故障时可以快速回滚,不影响用户。
  2. 版本隔离:为了兼容或者过度,某些应用会有多个版本,保证1.0版本不会调到1.1版本服务。
  3. 故障隔离:生产出故障后将出问题的实例隔离,不影响其他用户,同时也保留故障信息便于分析。
  4. 定制策略:根据业务情况定制跟业务场景最匹配的策略。

PS:上面的算法还能组合成新算法,如:

  • 轮询+权重=加权轮询。
  • 最快响应+权重,可以根据响应时间动态调整服务器的权重,达到负载均衡。

中间件使用的负载均衡算法

  • Nginx
  1. RoundRobin:轮询。
  2. WeightedRoundRobin:加权轮询。
  3. IPHash:按访问IP的Hash选择服务器。
  4. URLHash:按请求URL的Hash选择服务器。
  5. Fair:根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。
  • Dubbo
  1. RandomLoadBalance:加权随机。
  2. RoundRobinLoadBalance:加权轮询。
  3. LeastActionLoadBalance:最少链接数。
  4. ShortestResponseLoadBalance:最短响应时间。
  5. ConsistentHashLoadBalance:一致性Hash。
  • Ribbon
  1. RoundRobinRule:轮询。
  2. RandomRule:随机。
  3. WeightedResponseTimeRule:根据响应时间来分配权重的方式,响应的越快,分配的值越大。
  4. BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。
  5. RetryRule:先按照轮询策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务。
  6. ZoneAvoidanceRule:根据性能和可用性选择服务。
  7. AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问。

 

  • 54
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 44
    评论
Nginx提供了多种负载均衡算法,包括比weight和ip_hash更智能的负载均衡算法、按访问的URL的哈希结果来分配请求以及根据upstream结果来分配请求的算法。通过这些算法,可以实现智能地将请求分配给后端服务器,以提高系统的性能和效率。 其中,比weight和ip_hash更智能的负载均衡算法是fair算法,它可以根据页面大小和加载时间长短智能地进行负载均衡,即根据后端服务器的响应时间来分配请求,优先分配给响应时间较短的服务器。然而,Nginx本身不支持fair算法,如果需要使用这种调度算法,则必须安装upstream_fair模块。 另一种负载均衡算法是按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,从而进一步提高后端缓存服务器的效率。同样地,Nginx本身不支持url_hash算法,如果需要使用这种调度算法,则必须安装nginx的hash软件包。 需要注意的是,在使用upstream和hash算法时,可以将每个URL定向到同一台后端服务器,这在后端服务器作为缓存时会比较有效。 总结来说,Nginx提供了多种负载均衡算法,包括fair算法、url_hash算法以及根据upstream结果来分配请求的算法。具体选择哪种算法取决于系统的需求和实际情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nginx负载均衡的五种算法](https://blog.csdn.net/qq_42914720/article/details/119630569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值