spring cloud负载均衡--Ribbon

简介: spring cloud负载均衡--Ribbon

负载均衡通常有两种实现手段,一种是服务端负载均衡,另一种是客户端负载均衡,而我们的Ribbon就属于客户端负载均衡器。服务端负载均衡器的问题是,他提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客户端负载均衡就提供了这种灵活性。然而使用客户端负载均衡也有其缺点,如果配置不当,可能会导致服务提供者出现热点,或者压根拿不到任何服务的情况,这里了解一下这7种内置负载均衡策略。Ribbon介绍Ribbon是spring cloud技术栈中非常重要的基础框架,它为spring cloud提供了负载均衡的能力,比如Feign和OpenFegin都是基于Ribbon实现的,就连Nacos中的负载均衡也使用了Ribbon框架。Ribbon框架的强大之处在于,他不仅内置了7种负载均衡策略,同时还支持用户自定义负载均衡策略,所以其开放性和便利性也是它得以流行的主要原因。服务端负载均衡器和客户端负载均衡器的区别如下图所示:负载均衡设置以Nacos中的Ribbon负载均衡设置为例,在配置文件 application.yml 中设置如下配置即可:因为Nacos中已经内置了Ribbon,所以在实际项目开发中无需再添加Ribbon依赖了,这一点我们在Nacos的依赖树中就可以看到,如下:7种负载均衡策略1、轮询策略RoundRobinRule,按照一定的顺序依次调用服务实例。比如一共有3个服务,第一次调用服务1,第二次调用服务2,第三次调用服务3,依次类推。此策略的配置设置如下:2.权重策略权重策略:WeightedResponseTimeRule,根据每个服务提供者的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能醒就越低。他的实现原理是,刚开始使用轮询策略并开启一个计时器,每一段时间收集一次所有服务提供者的平均响应时间,然后再给每个服务提供者附上一个权重,权重越高被选中的概率也越大。此策略的配置设置如下:3.随机策略随机策略:RandomRule,从服务提供者的列表中随机选择一个服务实例。此策略的配置如下:4.最小连接数策略最小连接数策略:BestAvailableRule,也叫最小并发数策略,它是遍历服务提供者列表,选取连接数最小的一个服务实例,如果有相同的最小连接数,那么会调用轮询策略进行选取。此策略的配置如下:5.重试策略重试策略:RetryRule,按照轮询策略来获取服务,如果获取的服务实例为null或者已经失效,则在指定的时间之内不断的进行重试来获取服务,如果超过指定时间依然没有获取到服务实例则返回null,此策略的配置如下:6.可用性敏感策略可用性敏感策略: AvailabilityFilteringRule, 先过滤掉非健康的服务实例,然后再选择连接数较小的服务实例。此策略的配置设置如下:7.区域敏感策略区域敏感策略:ZoneAvoidanceRule,根据服务所在区域(zone)的性能和服务的可用性来选择服务实例,在没有区域的环境下,该策略和轮询策略类似。此策略的配置设置如下:总结:Ribbon为客户端负载均衡器,相比于服务端负载均衡器的统一负载均衡策略来说, 它提供了更多的灵活性。Ribbon 内置了 7 种负载均衡策略:轮询策略、权重策略、随机策略、最小连接数策略、重试策略、可用性敏感策略、区域性敏感策略,并且用户可以通过继承 RoundRibbonRule 来实现自定义负载均衡策略。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2天前
|
消息中间件 Java 数据安全/隐私保护
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
|
2天前
|
负载均衡 监控 Java
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
|
3天前
|
负载均衡 Java 应用服务中间件
Spring Cloud 负载平衡的意义什么?
负载平衡是指将网络流量在多个服务器之间分布,以达到提高系统性能、增强可靠性和提供更好用户体验的目的。在负载平衡的架构中,多个服务器被组织成一个集群,共同处理用户的请求。
26 4
|
4天前
|
缓存 负载均衡 算法
【微服务 SpringCloud】实用篇 · Ribbon负载均衡
【微服务 SpringCloud】实用篇 · Ribbon负载均衡
11 0
|
4天前
|
监控 安全 Java
Spring cloud原理详解
Spring cloud原理详解
18 0
|
4天前
|
负载均衡 算法 Java
Ribbon自定义负载均衡算法
Ribbon自定义负载均衡算法
16 1
|
4天前
|
消息中间件 负载均衡 Java
【Spring Cloud 初探幽】
【Spring Cloud 初探幽】
16 1
|
4天前
|
安全 Java Docker
|
4天前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
38 6
|
4天前
|
负载均衡
Ribbon负载均衡策略
Ribbon负载均衡策略