Ribbon 的负载均衡策略 springCloud

Posted lshan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ribbon 的负载均衡策略 springCloud相关的知识,希望对你有一定的参考价值。

原文:https://blog.csdn.net/wo18237095579/article/details/83384134?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

参考:https://blog.csdn.net/Jaycrees/article/details/105467629?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

 Ribbon 的负载均衡策略

 

 

默认为轮询策略

方式1:全局策略设置

增加 Ribbon 负载均衡策略配置类

@Configuration
public class RibbonGlobalLoadBalancingConfiguration {
    /**
     * 随机规则
     */
    @Bean
    public IRule ribbonRule() {
        return new RandomRule();
    }

}

 

方式2:

基于注解的针对单个服务的 Ribbon 负载均衡策略

  这里把上一步的的全局配置给删掉。

基于注解的针对单个服务的 Ribbon 负载均衡策略

  这里把上一步的的全局配置给删掉。

注解方式

  增加一个针对单个服务的 Ribbon 负载聚恒策略配置类:

@Configuration
/** 用来标记使用的注解,方便排除或者引用 **/
@AvoidScan
public class RibbonRandomLoadBalancingConfiguration {

    @Resource
    IClientConfig clientConfig;

    @Bean
    public IRule ribbonRule(IClientConfig clientConfig) {
        return new RandomRule();
    }

}
  • **IClientConfig:**针对客户端的配置管理器。

 在主启动类上方做针对单个服务的负载均衡策略:

/** 配置针对单个服务的 Ribbon 负载均衡策略 **/
@RibbonClient(
     //服务名 name
= "demo-goods", configuration = RibbonRandomLoadBalancingConfiguration.class ) /** 此处配置根据标识 @AvoidScan 过滤掉需要单独配置的 Ribbon 负载均衡策略,不然就会作用于全局,启动就会报错 */ @ComponentScan( excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, value = AvoidScan.class ) )

 

方式3:

基于配置文件方式:

  我个人也不太喜欢上方的那种注解方式针对单个服务的负载均衡策略,下面是配置文件的方式:

  application.yml

  • .ribbon.*
  • ### 针对单个服务的 Ribbon 配置
    demo-goods-service:
      ribbon:
        # 基于配置文件形式的 针对单个服务的 Ribbon 负载均衡策略
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

     

    my-load-balanced-service:
      ribbon:
        listOfServers: localhost:1001,localhost:1002,localhost:1003
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule
        NFLoadBalancerPingClassName: com.netflix.loadbalancer.responseTimeWeightedRule

     

         
 

以上是关于Ribbon 的负载均衡策略 springCloud的主要内容,如果未能解决你的问题,请参考以下文章

ribbon负载均衡详解

Ribbon负载均衡策略配置

Ribbon自带负载均衡策略比较

Ribbon如何自定义实现负载均衡策略

springcloud 微服务Spring Cloud Ribbon 负载均衡使用策略详解

聊聊Ribbon获取服务列表和负载均衡策略