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文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM