冠县住房和城乡建设局网站淘宝客建站教程
web/
2025/10/5 22:21:29/
文章来源:
冠县住房和城乡建设局网站,淘宝客建站教程,网站下载链接怎么做,中山市网站制作SpringCloud Ribbon中的7种负载均衡策略 Ribbon 介绍负载均衡设置7种负载均衡策略1.轮询策略2.权重策略3.随机策略4.最小连接数策略5.重试策略6.可用性敏感策略7.区域敏感策略 总结 负载均衡通器常有两种实现手段#xff0c;一种是服务端负载均衡器#xff0c;另一种是客户端… SpringCloud Ribbon中的7种负载均衡策略 Ribbon 介绍负载均衡设置7种负载均衡策略1.轮询策略2.权重策略3.随机策略4.最小连接数策略5.重试策略6.可用性敏感策略7.区域敏感策略 总结 负载均衡通器常有两种实现手段一种是服务端负载均衡器另一种是客户端负载均衡器而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是它提供了更强的流量控制权但无法满足不同的消费者希望使用不同负载均衡策略的需求而使用不同负载均衡策略的场景确实是存在的所以客户端负载均衡就提供了这种灵活性。 然而客户端负载均衡也有其缺点如果配置不当可能会导致服务提供者出现热点或者压根就拿不到任何服务的情况所以我们本文就来了解一下这 7 种内置负载均衡策略的具体规则。
Ribbon 介绍
Ribbon 是 Spring Cloud 技术栈中非常重要的基础框架它为 Spring Cloud 提供了负载均衡的能力比如 Fegin 和 OpenFegin 都是基于 Ribbon 实现的就连 Nacos 中的负载均衡也使用了 Ribbon 框架。
Ribbon 框架的强大之处在于它不仅内置了 7 种负载均衡策略同时还支持用户自定义负载均衡策略所以其开放性和便利性也是它得以流行的主要原因。
服务端负载均衡器和客户端负载均衡器的区别如下图所示客户端负载均衡器的实现原理是通过注册中心如 Nacos将可用的服务列表拉取到本地客户端再通过客户端负载均衡器设置的负载均衡策略获取到某个服务器的具体 ip 和端口然后再通过 Http 框架请求服务并得到结果其执行流程如下图所示
负载均衡设置
以 Nacos 中的 Ribbon 负载均衡设置为例在配置文件 application.yml 中设置如下配置即可
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #设置负载均衡策略因为 Nacos 中已经内置了 Ribbon所以在实际项目开发中无需再添加 Ribbon 依赖了这一点我们在 Nacos 的依赖树中就可以看到如下图所示Ribbon 默认的负载均衡策略是轮询模式我们配置 3 个服务提供者的执行结果如下图所示然后我们再将 Ribbon 负载均衡策略设置为随机模式配置内容如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #设置随机负载均衡重启客户端执行结果如下图所示
7种负载均衡策略
1.轮询策略
轮询策略RoundRobinRule按照一定的顺序依次调用服务实例。比如一共有 3 个服务第一次调用服务 1第二次调用服务 2第三次调用服务3依次类推。此策略的配置设置如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #设置负载均衡2.权重策略
权重策略WeightedResponseTimeRule根据每个服务提供者的响应时间分配一个权重响应时间越长权重越小被选中的可能性也就越低。它的实现原理是刚开始使用轮询策略并开启一个计时器每一段时间收集一次所有服务提供者的平均响应时间然后再给每个服务提供者附上一个权重权重越高被选中的概率也越大。此策略的配置设置如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule3.随机策略
随机策略RandomRule从服务提供者的列表中随机选择一个服务实例。此策略的配置设置如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #设置负载均衡4.最小连接数策略
最小连接数策略BestAvailableRule也叫最小并发数策略它是遍历服务提供者列表选取连接数最小的⼀个服务实例。如果有相同的最小连接数那么会调用轮询策略进行选取。此策略的配置设置如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #设置负载均衡5.重试策略
重试策略RetryRule按照轮询策略来获取服务如果获取的服务实例为 null 或已经失效则在指定的时间之内不断地进行重试来获取服务如果超过指定时间依然没获取到服务实例则返回 null。此策略的配置设置如下
ribbon:ConnectTimeout: 2000 # 请求连接的超时时间ReadTimeout: 5000 # 请求处理的超时时间
springcloud-nacos-provider: # nacos 中的服务 idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #设置负载均衡6.可用性敏感策略
可用敏感性策略AvailabilityFilteringRule先过滤掉非健康的服务实例然后再选择连接数较小的服务实例。此策略的配置设置如下
springcloud-nacos-provider: # nacos中的服务idribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule7.区域敏感策略
区域敏感策略ZoneAvoidanceRule根据服务所在区域zone的性能和服务的可用性来选择服务实例在没有区域的环境下该策略和轮询策略类似。
总结
Ribbon 为客户端负载均衡器相比于服务端负载均衡器的统一负载均衡策略来说它提供了更多的灵活性。Ribbon 内置了 7 种负载均衡策略轮询策略、权重策略、随机策略、最小连接数策略、重试策略、可用性敏感策略、区域性敏感策略并且用户可以通过继承 RoundRibbonRule 来实现自定义负载均衡策略。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87586.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!