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

最新文章

  1. 了解HTML CSS布局(层叠样式表)
  2. 习课的视频播放器 video.js
  3. 一个null引发的错误
  4. 【JAVA - SSM】之MyBatis查询缓存
  5. poj 1847 Tram【spfa最短路】
  6. App上线基本流程
  7. iOS_SN_CocoaPods使用详细说明( 转)
  8. vim 打开乱码
  9. js加载XML文件
  10. 随笔-SQL的三种存储引擎即三种类型的表
  11. UVa 10170 - The Hotel with Infinite Rooms
  12. MySQL“Another MySQL daemon already running with the same unix socket” 报错信息处理
  13. mysql-笔记--增删改查
  14. Hbase记录-zookeeper部署
  15. Java集合源码学习(四)HashMap
  16. HDU6216
  17. 水塘抽样(Reservoir Sampling)问题
  18. 函数getpass
  19. 子序列个数(fzu2129)
  20. hibernate sqlite jdbctemplate 待研究

热门文章

  1. java 对list 排序
  2. 巨蟒python全栈开发django2:初识django
  3. 子单元通过 prop 接口与父单元进行了良好的解耦
  4. ASP-Server.Transfer-Response.Redirect
  5. Servlet学习笔记【2】---Http数据包
  6. 生产者,消费者,CDN
  7. Js用户引导插件intro
  8. Selenium chrome配置不加载图片
  9. 使用Kotlin开发Android应用(I):简介
  10. Scrapy框架2