自定义 Ribbon 的负载均衡策略(上)|学习笔记

简介: 快速学习自定义 Ribbon 的负载均衡策略(上)

开发者学堂课程【微服务框架 Spring Cloud 快速入门自定义 Ribbon 的负载均衡策略(上)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/614/detail/9357


自定义 Ribbon 的负载均衡策略(上)

 

内容介绍

一.主启动类添加@RibbonClient

二.注意配置细节

三.步骤

四.自定义规则深度解析

 

一、主启动类添加 @RibbonClient

@RibbonClient 注解给跟 Ribbon 有一定关系,Ribbon 是客户端的基础,在主启动类添加这个类,而不占用 Ribbon 默认的类,在启动该微服务的时候就能去加载自定义 Ribbon 配置类,从而使配置生效,形如:

@RibbonClient(name=”MICRSERVICELOUD-DEPT”,confiuration=MySelfRule,class)

当针对谁用,就套给谁用,当针对”MICRSERVICELOUD-DEPT”这个微服务名词时,在”MyselfRule”里面赋给算法,这是自定义的轮询规则。

现在需要”MyselfRule”这个类,只要能实现IRule这个接口,就符合了一种负载均衡算法。

 

二.注意配置细节

官方文档明确给出警告:

这个自定义配置类不能放在 @ComponentScan 所扫描的当前包下以及子包下,否则自定义的这个配置类就会被所有的 Ribbon 客户端所共享,也就是说达不到特殊化定制的目的了,其中自定义配置类就是”MyselfRule”类,不能和主体类占一块,因为主体类有一个类上面有一个叫”@SpringBootApplication”注解,里面带有@ComponentScan 这个注解,也就是说,定义的的路径不能跟带有”@ComponentScan”注解的同包或者子包下,换句话说,定义的”MyselfRule”就不能在”com.atguigu.springcloud”这个包及其子包下,因为这个包的子包下有带有”@ComponentScan”注解的类。“@SpringBootApplication”这个注解应标在主启动类的下边,主启动类是在”com.atguigu.springcloud”这个包下面,所以不能放在下面,只能新建一个包。

代码:

@Configuration

@RibbonClient(name=“foo”,configuation=FooConfiguation.class)

public class TestConfiguation{

}

当测试配置对”foo”这个微服务使用 FooConfiguration.class 这样一个自定义的配置,官网就给出了这样的注意:

The FooConfiguration has to be @Configuration but take care that it is not in a @ComponentScan

意思是:这个自定义配置类不能放在 @ComponentScan 所扫描的当前包下以及子包下。

 

三.步骤

1.新建package com.atguigu.myrule

(1)如图:

 image.png

(2) 新建自定义Robbin规则类

注意,在MyselfRule 类上面要有 @Configuration 和 @Bean 这两个注解:

代码:

@Configuration

Public class MyselfRule

{

@Bean

Public IRule myRule()

{

Return new RandomRule();//Ribbon默认是轮询,自定以为随机。

}

}

在该微服务启动的时候就能去加自定义 Ribbon 配置类,从而使配置生效。

2.修改主启动类

代码:

public class DeptConsumer80_App

{

Public static void main(String[] args)

{

SpringApplication,run(DeptConsumer80_App.class,args);

}

}

3. 测试结果:

{"deptno": 1, " dname":"开发部", "db_source" :"clouddb01"}

刷新一次:

{"deptno" : 1, " dname":"开发部", "db_source" :"clouddb03"}

刷新两次:

{"deptno" : 1, " dname":"开发部", "db_source" :"clouddb02"}

得出结论:发现每次”clouddb01”每次刷新都会变化,说明我们设置的随机生效了。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
6月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
6月前
|
人工智能 负载均衡 Cloud Native
云原生之负载均衡策略
ai必学之负载均衡 @[TOC]轮询处理;weight权重;ip_hash
|
11月前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
2390 11
架构学习:7种负载均衡算法策略
|
11月前
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
614 9
SpringBoot整合XXL-JOB【04】-  以GLUE模式运行与执行器负载均衡策略
|
负载均衡
slb自定义健康检查路径
slb自定义健康检查路径
217 3
|
负载均衡 Java Nacos
常见的Ribbon/Spring LoadBalancer的负载均衡策略
自SpringCloud 2020版起,Ribbon被弃用,转而使用Spring Cloud LoadBalancer。Ribbon支持轮询、随机、加权响应时间和重试等负载均衡策略;而Spring Cloud LoadBalancer则提供轮询、随机及Nacos负载均衡策略,基于Reactor实现,更高效灵活。
774 0
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
1116 61
|
负载均衡 监控 网络协议
SpringCloud之Ribbon使用
通过以上步骤,就可以在Spring Cloud项目中有效地使用Ribbon来实现服务调用的负载均衡,提高系统的可靠性和性能。在实际应用中,根据具体的业务场景和需求选择合适的负载均衡策略,并进行相应的配置和优化,以确保系统的稳定运行。
550 15
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
负载均衡 算法 Java
SpringCloud之Ribbon使用
通过 Ribbon,可以非常便捷的在微服务架构中实现请求负载均衡,提升系统的高可用性和伸缩性。在实际使用中,需要根据实际场景选择合适的负载均衡策略,并对其进行适当配置,以达到更佳的负载均衡效果。
604 13