当前位置:首页 > 科技  > 软件

SpringCloud有哪些负载均衡策略?

来源: 责编: 时间:2023-10-27 21:44:08 543观看
导读负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者

6O128资讯网——每日最新资讯28at.com

负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。6O128资讯网——每日最新资讯28at.com

服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客户端负载均衡就提供了这种灵活性。然而客户端负载均衡也有其缺点,如果配置不当,可能会导致服务提供者出现热点,或者压根就拿不到任何服务的情况,所以我们本文就来了解一下这 7 种内置负载均衡策略的具体规则。6O128资讯网——每日最新资讯28at.com

Ribbon 介绍

Ribbon 是 Spring Cloud 技术栈中非常重要的基础框架,它为 Spring Cloud 提供了负载均衡的能力,比如 Fegin 和 OpenFegin 都是基于 Ribbon 实现的,就连 Nacos 中的负载均衡也使用了 Ribbon 框架。6O128资讯网——每日最新资讯28at.com

Ribbon 框架的强大之处在于,它不仅内置了 7 种负载均衡策略,同时还支持用户自定义负载均衡策略,所以其开放性和便利性也是它得以流行的主要原因。6O128资讯网——每日最新资讯28at.com

服务端负载均衡器和客户端负载均衡器的区别如下图所示:6O128资讯网——每日最新资讯28at.com

6O128资讯网——每日最新资讯28at.com

客户端负载均衡器的实现原理是通过注册中心,如 Nacos,将可用的服务列表拉取到本地(客户端),再通过客户端负载均衡器(设置的负载均衡策略)获取到某个服务器的具体 ip 和端口,然后再通过 Http 框架请求服务并得到结果,其执行流程如下图所示:6O128资讯网——每日最新资讯28at.com

6O128资讯网——每日最新资讯28at.com

负载均衡设置

以 Nacos 中的 Ribbon 负载均衡设置为例,在配置文件 application.yml 中设置如下配置即可:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.RoundRobinRule #设置负载均衡策略

因为 Nacos 中已经内置了 Ribbon,所以在实际项目开发中无需再添加 Ribbon 依赖了,这一点我们在 Nacos 的依赖树中就可以看到,如下图所示:6O128资讯网——每日最新资讯28at.com

6O128资讯网——每日最新资讯28at.com

Ribbon 默认的负载均衡策略是轮询模式,我们配置 3 个服务提供者的执行结果如下图所示:6O128资讯网——每日最新资讯28at.com

6O128资讯网——每日最新资讯28at.com

然后,我们再将 Ribbon 负载均衡策略设置为随机模式,配置内容如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.RandomRule #设置随机负载均衡

重启客户端,执行结果如下图所示:6O128资讯网——每日最新资讯28at.com

6O128资讯网——每日最新资讯28at.com

7种负载均衡策略

1、轮询策略

轮询策略:RoundRobinRule,按照一定的顺序依次调用服务实例。比如一共有 3 个服务,第一次调用服务 1,第二次调用服务 2,第三次调用服务3,依次类推。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.RoundRobinRule #设置负载均衡

2、权重策略

权重策略:WeightedResponseTimeRule,根据每个服务提供者的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性也就越低。它的实现原理是,刚开始使用轮询策略并开启一个计时器,每一段时间收集一次所有服务提供者的平均响应时间,然后再给每个服务提供者附上一个权重,权重越高被选中的概率也越大。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.WeightedResponseTimeRule

3、随机策略

随机策略:RandomRule,从服务提供者的列表中随机选择一个服务实例。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.RandomRule #设置负载均衡

4、最小连接数策略

最小连接数策略:BestAvailableRule,也叫最小并发数策略,它是遍历服务提供者列表,选取连接数最小的⼀个服务实例。如果有相同的最小连接数,那么会调用轮询策略进行选取。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.BestAvailableRule #设置负载均衡

5、重试策略

重试策略:RetryRule,按照轮询策略来获取服务,如果获取的服务实例为 null 或已经失效,则在指定的时间之内不断地进行重试来获取服务,如果超过指定时间依然没获取到服务实例则返回 null。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

ribbon:  ConnectTimeout: 2000 # 请求连接的超时时间  ReadTimeout: 5000 # 请求处理的超时时间springcloud-nacos-provider: # nacos 中的服务 id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.RandomRule #设置负载均衡

6、可用性敏感策略

可用敏感性策略:AvailabilityFilteringRule,先过滤掉非健康的服务实例,然后再选择连接数较小的服务实例。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.AvailabilityFilteringRule

7、区域敏感策略

区域敏感策略:ZoneAvoidanceRule,根据服务所在区域(zone)的性能和服务的可用性来选择服务实例,在没有区域的环境下,该策略和轮询策略类似。此策略的配置设置如下:6O128资讯网——每日最新资讯28at.com

springcloud-nacos-provider: # nacos中的服务id  ribbon:    NFLoadBalancerRuleClassName: comflix.loadbalancer.ZoneAvoidanceRule

项目源码

https://gitee.com/mydb/spring-cloud-alibaba-example。6O128资讯网——每日最新资讯28at.com

总结

Ribbon 为客户端负载均衡器,相比于服务端负载均衡器的统一负载均衡策略来说,它提供了更多的灵活性。Ribbon 内置了 7 种负载均衡策略:轮询策略、权重策略、随机策略、最小连接数策略、重试策略、可用性敏感策略、区域性敏感策略,并且用户可以通过继承 RoundRibbonRule 来实现自定义负载均衡策略。6O128资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-15487-0.htmlSpringCloud有哪些负载均衡策略?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 十个提高Web开发效率的VS Code插件

下一篇: 用C++实现图像处理中三种常见的滤波算法

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 帅气纯真少年!日本最帅初中生选美冠军出炉

    日本第一帅哥初一生选美大赛冠军现已正式出炉,冠军是来自千叶县的宗田悠良。日本一直热衷于各种选美大赛,从“最美JK”起到“最美女星&r
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
Top