首页 > 其他分享 >springcloud负载均衡组件ribbon使用

springcloud负载均衡组件ribbon使用

时间:2024-09-19 13:35:12浏览次数:9  
标签:策略 springcloud 配置 IRule 服务端 组件 ribbon 轮训

一、微服务负载均衡ribbon策略如下:

1、线性轮询策略: RoundRibbonRule 

2、重试策略:RetryRule

3、加权响应时间策略:WeightedResponseTimeRule

4、随机策略:RandomRule

5、最空闲策略:BestAvailableRule

6、区域感知轮询策略:ZoneAvoidanceRule(默认)

每个策略对应什么意思,基本也就是字面所示,默认策略是区域,如果没有区域,那就是轮询策略

二、那如何修改默认的策略

有两种方法:1、使用配置类;2、使用配置文件配置

方法一:使用配置类:

每个轮训策略的父类都是IRule(里面的核心方法就是choose,用来选择服务实例),我们只需要实现它重新定义轮训策略即可

①新建配置类

@Configuration
public class RibbonRandomRuleConfig {


    @Bean
    public IRule iRule(){
        return new RandomRule();
    }
}

有两个注意点:1、方法需要返回IRule这个对象,并且方法名必须是iRule;2、该配置类的不能和启动类所在@SpringBootApplication同级别(主要是有@ComponentScan),这个是源码里面扫描的时候,如果和@ComponentScan同级,那就会让所有的服务提供方都共享这个负载均衡策略,即使别的服务配置了不同的轮训策略依旧会失效。

 2、在启动类上配置扫描

配置完成,去测试下就可以看下效果。如果想换轮训策略,只需要在返回的config配置类里面返回对应的策略即可,如下为IRule策略

 

方法二:使用配置文件配置

在消费端(order-ribbon)的application.yml里面配置如下ribbon配置,注意这个stock-service是服务提供方

stock-service:  服务提供方
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  策略所在包路径

这里配置的是nacos权重策略,这里是包的完整路径

 

如果是直接随机或者轮训的策略,那到此为止了,那这个是基于nacos的权重策略的,所以需要去nacos里面配置下实例的权重,如下

 

 这IRule有个接口AbstractLoadBalancerRule是辅助IRule负载均衡策略选取适合的服务端可用实例,简单理解就是可能服务端有多种类型的,而这个接口就能找到你要的那个服务端实例,比如此处要的就是stock-service这个名称的服务端实例,而不是别的,order-stock里面的application.yml里面的stock-service也是注明要这类的服务端实例。

到此,这使用ribbon组件两种方式就已经完成,可自行选择

 

以上内容仅学习使用!

 

标签:策略,springcloud,配置,IRule,服务端,组件,ribbon,轮训
From: https://www.cnblogs.com/qwg-/p/18420283

相关文章

  • Vue 依赖注入组件通信:provide / inject 使用详解
    引言在Vue.js中,我们经常会遇到组件之间需要共享数据的情况。一种常见的解决方案是通过props和$emit事件来进行数据传递,但对于多层嵌套的组件结构或共享状态的场景,这种方式显得繁琐而不直观。幸运的是,Vue.js提供了一个稍微优雅的解方案:依赖注入-provide和inject。......
  • 火语言RPA流程组件介绍--设置元素属性值
    ......
  • 【VUE3.0】动手做一套像素风的前端UI组件库---Button
    目录引言做之前先仔细看看UI设计稿解读一下都有哪些元素:素材补充代码编写1.按钮四周边框2.默认状态下按钮颜色立体效果3.鼠标移入聚焦4.模拟鼠标点击效果组件封装1.按类型设置颜色2.设置按钮禁用状态3.处理一个bug4.看下整体组件效果5.完整代码总结引言......
  • Django Auth组件
    文章目录前言一、使用场景二、使用步骤1.验证用户(authenticate()方法)2.注册用户3.退出登陆4.装饰器前言Django的用户认证组件基于以下几个核心概念:1.用户认证:处理用户的登录、注销和密码管理,提供了一个User模型和相关的视图、表单和后台管理功能2.权限和组......
  • springCloud整合nacos
    关于springCloud整合nacos主要步骤如下(主要介绍nacos作为注册中心使用的配置)1、添加依赖;2、添加配置;3、服务启动,查看注册信息1、添加依赖:<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-......
  • VUE框架CLI组件化组件绑定自定义事件时回调函数的this对象------VUE框架
    <template> <div> <!--内置函数的实现步骤--> <!--提供事件源,给事件源绑定事件,编写回调函数,将回调函数和事件进行绑定--> <!--等待事件的触发,事件触发执行回调函数--> <!--组件的自定义事件实现步骤--> <button@click="Hello()">你好</button> <!--给Us......
  • Vue3.5中解构props,让父子组件通信更加丝滑
    前言在Vue3.5版本中响应式Props解构终于正式转正了,这个功能之前一直是试验性的。这篇文章来带你搞清楚,一个String类型的props经过解构后明明应该是一个常量了,为什么还没丢失响应式呢?本文中使用的Vue版本为欧阳写文章时的最新版Vue3.5.5关注公众号:【前端欧阳】,给自己一个进阶vu......
  • 使用pnpm、monorepo 来构建 vue + 独立组件库项目
    新建项目使用pnpm进行安装pnpmcreatevue@latest在根目录下创建pnpm-workerspace.yaml文件packages:-'components/**'此处,components为根目录中的components文件夹,他是独立于我们项目的一个组件库,不包含在src内,此时目录结构如下:root-components-node_modules......
  • 一套基于 Ant Design 和 Blazor 的开源企业级组件库
    前言今天大姚给大家分享一套基于AntDesign和Blazor的开源(MITLicense)、免费的企业级组件库(喜欢AntDesign风格的同学推荐使用):AntDesignBlazor。项目特性提炼自企业级中后台产品的交互语言和视觉风格。开箱即用的高质量Blazor组件,可在多种托管方式共享。支持基于WebAssembly......
  • Vue.js入门系列(三十):深入理解独享路由守卫、组件内路由守卫、History模式与Hash模式
    个人名片......