美文网首页
Ribbon配置负载均衡策略

Ribbon配置负载均衡策略

作者: RalapHao | 来源:发表于2017-10-26 21:26 被阅读0次

    前言

    上篇文章介绍Ribbon对一个服务进行负载,使用的默认的策略(轮询RoundRobinRule),下面介绍不同的服务如何使用不同的负载均衡策略。

    Riddon负载均衡策略

    负载策略详细说明

    在SpringCloud中使用

    1.方法一
    创建配置类

    @Configuration  
    public class MyRibbonConfig {
    
        @Bean
        public IRule ribbonRule() {
            //随机策略
            return new RandomRule();
        }
    
    }
    

    启动类上加注解

    @RibbonClient(name = "user-provider", configuration = MyRibbonConfig.class)
    

    说明

    上面的基础是又启动了俩个application name 为user-provider-2的服务,
    MyRibbonConfig 不能放到【启动类】类的同级或是子目录下,因为这个类不能被@ComponentScan会扫描到,如果扫描到了,所有的服务都会使用定义的负载均衡策略,切记

    测试

    @GetMapping("/test")
        public void test() {
            ServiceInstance instance = this.loadBalancerClient.choose("user-provider");
            System.out.println(
                    "---------------: " + instance.getServiceId() + ": " + instance.getHost() + ": "
                            + instance
                            .getPort());
    //        System.out.println(instance.toString());
    
            ServiceInstance instance1 = this.loadBalancerClient.choose("user-provider-2");
            System.out.println(
                    "++++++++++++++++: " + instance1.getServiceId() + ": " + instance1.getHost() + ": "
                            + instance1
                            .getPort());
        }
    

    结果


    result.png

    我们可以看到【user-provider】俩个服务是随机调用的,【user-provider-2】俩个服务是轮询调用的

    1. 方法二
      如果就像想把MyRibbonConfig放到启动类及启动类所在包的子包下,使用以下方法。
      自定义一个空注解
    public @interface ExcudeAnnotatio {
    
    }
    

    配置类上加自定义的注解

    config.png

    启动类上加过滤注解


    run.png

    结果
    同上

    1. 方法三
      配置文件配置
      不需要加任何配置类,在application.yml中加
    user-provider:
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    

    禁用Eureka

    ribbon:
      eureka:
        enabled: false
    
    user-provider:
      ribbon:
        listOfServers: localhost:8080
    
    user-provider-2:
      ribbon:
        listOfServers: localhost:8083,localhost:8082
    

    如果禁止了Eureka,只会访问ribbon指定的服务,如果不禁止,下面配置不生效

    参考资料

    相关文章

      网友评论

          本文标题:Ribbon配置负载均衡策略

          本文链接:https://www.haomeiwen.com/subject/thclpxtx.html