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

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

静态负载均衡算法

  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:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问。

 

相关推荐
<p style="text-align:left;"> <b><span style="line-height:24px;background-color:#FFE500;color:#000000;font-size:14px;">【超实用课程内容】</span></b> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;"><span style="color:#000000;"><span style="font-size:14px;">程序员对于算法一直又爱又恨!</span><span style="font-size:14px;">特别是在求职面试时,算法类问题绝对是不可逃避的提问点!</span><span style="font-size:14px;">本门课程作为算法面试系列的第一季,会从</span><span style="font-size:14px;">“知己知彼”的角度,聊聊关于算法面试的那些事~</span></span></span> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;"><span style="color:#000000;"><span><br /> </span></span></span> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;"><span style="color:#000000;"><span> </span></span></span> </p> <p class="ql-long-24357476" style="font-size:11pt;color:#494949;"> <span class="ql-author-24357476" style="color:#000000;background-color:#FFE500;font-size:14px;"><strong>【哪些人适合学习这门课程?】</strong></span> </p> <ul> <li> <p class="ql-long-24357476"> <span style="color:#000000;font-size:14px;">求职中的开发者,对于面试算法阶段缺少经验</span> </p> </li> <li> <p class="ql-long-24357476"> <span style="color:#000000;font-size:14px;">想了解实际工作中算法相关知识</span> </p> </li> <li> <p class="ql-long-24357476"> <span style="color:#000000;font-size:14px;">在职程序员,算法基础薄弱,急需充电</span> </p> </li> </ul> <p> <br /> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="line-height:24px;background-color:#FFE500;color:#000000;font-size:14px;"><span style="line-height:24px;color:#000000;font-size:14px;">【超人气讲师】</span></span></b><br /> <span style="line-height:24px;color:#000000;font-size:14px;">孙秀洋 | 服务器端工程师</span> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;color:#000000;"><span style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;">硕士毕业于哈工大计算机科学与技术专业,</span><span style="font-size:14px;">ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。</span><br /> </span> </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;"><br /> </span> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;"></span> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="line-height:24px;color:#000000;background-color:#FFE500;font-size:14px;"><span style="font-family:"line-height:24px;background-color:#FFE500;color:#000000;font-size:14px;"><b>【课程如何观看?】</b></span></span> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="color:#000000;font-size:14px;">PC端:<a href="https://edu.csdn.net/course/detail/27272">https://edu.csdn.net/course/detail/27272</a></span> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="color:#000000;font-size:14px;">移动端:CSDN 学院APP(注意不是CSDN APP哦)</span> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <span style="color:#000000;font-size:14px;">本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~</span> </p>
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页