SpringCloud微服务 之Ribbon(三-Customize)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012437781/article/details/83449401

前言

上一节我们学习了在SpringCloud微服务中如何通过代码的方式自定义ribbon的均衡负载策略,本小节我们将学习一下如何通过配置的方式实现自定义ribbon的均衡负载策略。

案例

  • Eureka Server端编写:((参考前例))

  • Eureka Client端服务提消费编写(多实例) 在多个端口启动多个实例 (参考前例)
    开启3个实例(8081、8083、8084)
    在这里插入图片描述

  • Eureka Client端服务提供方编写(参考前例)

    • 项目结构
      在这里插入图片描述

    • CoreCode

      
      @SpringBootApplication
      @EnableDiscoveryClient
      public class MicroserviceDealBrokerRibbonCustomizedApplication {
      
      	@Bean
      	@LoadBalanced
      	/**
      	 * 添加 @LoadBalanced 使该RestTemplate具备Ribbon均衡负载算法功能
      	 * @return
      	 */
      	public RestTemplate restTemplate() {
      		return new RestTemplate();
      	}
      
      	public static void main(String[] args) {
      		SpringApplication.run(MicroserviceDealBrokerRibbonCustomizedApplication.class, args);
      	}
      }
      
      server:
        port: 8082
      spring:
        application:
          name: microservice-deal-broker-cloud-ribbon-customized-properties
      eureka:
        client:
          serviceUrl:
            defaultZone: http://localhost:8080/eureka/
        instance:
          prefer-ip-address: true
      
      microservice-deal-cloud:
        ribbon:
          NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
      
  • 持续访问:http://localhost:8082/deal/2
    Ribbon会使用随机策略随机定位到不同的实例:

小结

  • 通过配置的方式实现自定义ribbon均衡负载策略需要在服务消费者方的配置文件中做如下定义:
    microservice-deal-cloud: ribbon: NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule。
    (本案例以RandomRule作为ribbon的均衡负载策略,实际上ribbon还为我们提供更为丰富的均衡负载策略)。

  • 对于通过配置的方式实现自定义ribbon均衡负载策略的案例中,对以声明的服务节点ribbon将案例自定义的负载均衡策略去命中节点,例如我们对microservice-deal-cloud节点声明的是RandomRule策略,其他节点若未做声明那么将使用ribbon默认的负载均衡策略即轮询策略。

  • 本小节使用到的案例:microservice-deal-eureka、microservice-deal-cloud(8081、8083、8084)、microservice-deal-broker-cloud-ribbon-customized-properties。

猜你喜欢

转载自blog.csdn.net/u012437781/article/details/83449401