基于 Ribbon 实现负载均衡|学习笔记

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 快速学习基于 Ribbon 实现负载均衡

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段:基于 Ribbon 实现负载均衡】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/684/detail/11866


基于 Ribbon 实现负载均衡

 

内容介绍:

一、 Ribbon 的介绍

二、调整 Ribbon 的负载均衡策略

 

一、Ribbon 的介绍

1、代码实操

上节我们以自定义代码的形式实现了负载均衡效果,但是所用代码并不是特别完美,当前的代码只能以随机的形式实现负载均衡,但真正的负载均衡是有很多策略的。

如何基于 Ribbon 实现负载均衡。

首先学习何为 Ribbon ,它是 Spring Cloud 的一个组件,它可以让我们使用一个组件就能轻松搞定负载均衡。

通过代码的形式实战

第一步:在 RestTemplate 的生成方法上添加 @LoadBalanced 注解。

第二步:修改服务调用的地方,其原来使用的是实例的地址和端口,而现在直接改成了 nacos 的服务地址名称,即 server-product 。打开 OrderApplication ,找到 resttemplate 的方法加一个注解,在 @Bean 下方输入 @LoadBalanced 。

2、修改调用

然后第二步修改调用方式,调用方式直接采用 server-product 即可,将其替换到 “http://” +instance.getHost() +”:” + instance.getPort ()+”/product/” +pid 中,将 //调用商品微服务,查询商品信息 下方的代码删除,将 //下单后缀改为 --ribbon负载均衡。

3、实验验证

然后重新启动 OrderApplication 观察效果, ribbon 默认的负载均衡策略是轮询。

接下来访问订单微服务,打开商品把两个里面的日志全部清空,观察其中的一个进行访问,在标签页刷新发现第一个请求到了8081上,继续刷新请求便到了8082上,继续实验可得确实是负载均衡并且为轮询的策略。

 

二、调整 Ribbon 的负载均衡策略

1、 ribbon 七大负载均衡策略

如何调整 Ribbon 的负载均衡的策略

首先了解 ribbon 支持的负载均衡策略有哪些。

Ribbon 内置了多种负载均衡策略,内部负载均衡的顶级接口为 com. Netflix .loadbalancer .IRule 下面介绍几个最常用的负载均衡策略,

RoundRobinRule  RandomRule 和 BestAvailableRule,然后我们来学习如何对他们进行调整。

2、 RandomRule 的演示

以 RandomRule 为例进行调整,我们只需修改一下配置即可:

Service-product :#调用的提供者的名称

Ribbon:

NFLoadBalancerRuleClassName:com.netflIx. Loadalancer. RandomRule

找到订单微服务的配置文件,在代码的最下方进行配置,输入 Service-product :#调用的提供者的名称

Ribbon:

NFLoadBalancerRuleClassName:com.netflIx. Loadalancer. RandomRule

要注意 Service-product 是服务提供者的服务名称,Ribbon:

NFLoadBalancerRuleClassName 是固定的,

com.netflIx. Loadalancer. RandomRule  是具体的负载均衡策略的名称。然后重新启动来验证效果。

打开商品把两个里面的日志全部清空,观察其中的一个进行访问,在标签页刷新发现两个服务提供者的选取是随机的,并无一定规律,由此我们的负载均衡调整策略就完成了,我们可以按照这种方式依次对上面7中负载均衡策略做一个演示。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
负载均衡 Java Nacos
Ribbon负载均衡
Ribbon负载均衡
27 1
Ribbon负载均衡
|
4月前
|
负载均衡 算法 架构师
Ribbon负载均衡
上一节就已经实现的负载均衡笔者并未深入探讨,本节通过分析负载均衡算法、Ribbon实现负载均衡的底层原理和实现过程,让大家对负载均衡有了一个大体认识,同时针对Ribbon自定义负载均衡策略,饥饿加载让大家对于Ribbon的了解又多一些。Ribbon实现的负载均衡只是方案之一,我们可以尽量多了解但不要局限于此。
|
1月前
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
58 5
|
9天前
|
负载均衡 Java Nacos
常见的Ribbon/Spring LoadBalancer的负载均衡策略
自SpringCloud 2020版起,Ribbon被弃用,转而使用Spring Cloud LoadBalancer。Ribbon支持轮询、随机、加权响应时间和重试等负载均衡策略;而Spring Cloud LoadBalancer则提供轮询、随机及Nacos负载均衡策略,基于Reactor实现,更高效灵活。
23 0
|
3月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
4月前
|
存储 设计模式 缓存
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
该文章主要介绍了如何在OpenFeign中集成Ribbon以实现负载均衡,并详细分析了Ribbon中服务选择和服务过滤的核心实现过程。文章还涉及了Ribbon中负载均衡器(ILoadBalancer)和负载均衡策略(IRule)的初始化方式。
OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现
|
4月前
|
缓存 负载均衡 Java
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
文章标题为“OpenFeign的Ribbon负载均衡详解”,是继OpenFeign十大可扩展组件讨论之后,深入探讨了Ribbon如何为OpenFeign提供负载均衡能力的详解。
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
|
5月前
|
负载均衡 算法 网络协议
Ribbon 负载均衡源码解读
Ribbon 负载均衡源码解读
62 15
Ribbon 负载均衡源码解读
|
3月前
|
负载均衡 Java 开发者
Ribbon框架实现客户端负载均衡的方法与技巧
Ribbon框架为微服务架构中的客户端负载均衡提供了强大的支持。通过简单的配置和集成,开发者可以轻松地在应用中实现服务的发现、选择和负载均衡。适当地使用Ribbon,配合其他Spring Cloud组件,可以有效提升微服务架构的可用性和性能。
39 0
|
5月前
|
负载均衡 Java API
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
78 11