zoukankan      html  css  js  c++  java
  • Spring Cloud Ribbon实现客户端负载均衡

    1、构建microservice-consumer-movie-ribbon项目,在pom.xml中引入ribbon依赖

      在引入Eureka依赖的时候,默认里面含有ribbon依赖

    2、添加@LoadBalanced注解,实现负载均衡

      ribbon负载均衡策略默认为轮循方式

    @SpringBootApplication
    @EnableEurekaClientpublic class ConsumeMovieRibbonApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConsumeMovieRibbonApplication.class, args);
        }
        @Bean
        @LoadBalanced  //客户端负载均衡
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }

    3、自定义负载均衡策略

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import com.netflix.loadbalancer.IRule;
    import com.netflix.loadbalancer.RandomRule;
    /**
     * @Configuration注解不能放在@SpringBootApplication所在的包下
    * 如果放在此包下,默认全部负载均衡使用此策略 *
    */ @Configuration @ExcludeFromComponentScan public class TestConfiguration { /** * 设置负载均衡的规则为随机 * */ @Bean public IRule ribbonRule() { return new RandomRule(); } }

    4、指定对那个客户端使用自定义负载均衡

    @SpringBootApplication
    @EnableEurekaClient
    @RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class)
    public class ConsumeMovieRibbonApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConsumeMovieRibbonApplication.class, args);
        }
        @Bean
        @LoadBalanced  //客户端负载均衡
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }

    5、如果@Configuration注解放在@SpringBootApplication所在的包下

      a、在@Configuration包下创建ExcludeFromComponentScan注解

    package com.wyl.microservicesimpleconsumemovie;
    public @interface ExcludeFromComponentScan {
    }

      b、在入口类中排除此注解不扫描

    package com.wyl.microservicesimpleconsumemovie;
    
    @SpringBootApplication @EnableEurekaClient @RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class) @ComponentScan(excludeFilters = {@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)}) public class ConsumeMovieRibbonApplication {   ... }

      c、在TestConfiguration中使用此注解

    /**
     * @Configuration注解不能放在@SpringBootApplication所在的包及其子包下
     * */
    @Configuration
    @ExcludeFromComponentScan
    public class TestConfiguration {
        /**
         * 设置负载均衡的规则为随机
         * */
        @Bean
        public IRule ribbonRule() {
            return new RandomRule();
        }
    }

    6、开启多个microservice-provider-user微服务,测试结果

        

    负载均衡的结果:

    111:microservice-provider-user:192.168.1.39:7900
    222:microservice-provider-user2:192.168.1.39:7903
    111:microservice-provider-user:192.168.1.39:7900
    222:microservice-provider-user2:192.168.1.39:7902
    111:microservice-provider-user:192.168.1.39:7901
    222:microservice-provider-user2:192.168.1.39:7903
    111:microservice-provider-user:192.168.1.39:7900
    222:microservice-provider-user2:192.168.1.39:7902
    111:microservice-provider-user:192.168.1.39:7901
    222:microservice-provider-user2:192.168.1.39:7903
    111:microservice-provider-user:192.168.1.39:7901
    222:microservice-provider-user2:192.168.1.39:7902
    111:microservice-provider-user:192.168.1.39:7900
    222:microservice-provider-user2:192.168.1.39:7903
    111:microservice-provider-user:192.168.1.39:7900
    222:microservice-provider-user2:192.168.1.39:7902
    microservice-provider-user采用自定义的随机负载均衡,而microservice-provider-user2采用ribbon默认的轮循方式
    6、完整代码参见https://i.cnblogs.com/Files.aspx中microservice-spring-cloud-ribbon文件
  • 相关阅读:
    word文档中画垂直或水平的线条
    word文档中把几个图形组合在一起
    设计模式
    确认删除的提示的JQuery
    Incorrect column count: expected 1, actual 4 问题
    Spring MVC 中的 controller层的方法的返回值类型
    SpringBoot 项目用户登录
    使用模板异常的解决
    Redis配置到本地以及可视化工具的安装运用
    第034讲:丰富的else语句及简洁的with语句 | 课后测试题及答案
  • 原文地址:https://www.cnblogs.com/studyDetail/p/7080985.html
Copyright © 2011-2022 走看看