springcloud负载均衡组件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组件两种方式就已经完成,可自行选择

 

以上内容仅学习使用!

 

posted @   多多指教~  阅读(146)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示