9.Ribbon负载均衡
9.1 Ribbon是什么?
答:是基于Netflix Ribbon实现的一套客户端 负载均衡(Load Balanced)的工具,主要功能是提供客户端软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完善的配置项如连接超时,重试等。
9.2 Ribbon的配置初步:
9.2.1:在消费者80的POM.XML中
<!-- Ribbon相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
9.2.2 :在YAML中加上:
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
9.2.3 在客户端的配置类上加上:
@Configuration
public class ConfigBean {
@Bean
@LoadBalanced //加上负载均衡注解
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
9.2.4 完成真正的通过微服务名字从eureka上找到并访问。
测试:
9.2.5 在主启动类上加@EnableEurekaClient注解
9.2.6 修改消费者端Controoler层访问的服务名:
// private static final String REST_URL_PREFIX = "http://localhost:8001";
private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";
9.3 Ribbon负载均衡:
9.3.1
9.3.2
9.3.3
效果:访问时会根据需求自动选择访问的库(clouddb01、clouddb02、clouddb03间切换)
9.4 Ribbon核心组件IRule(各种负载均衡算法):
自定义负载均衡算法。
9.6
9.6.1
9.6.2 自定义一个配置类(该类不能放在@ComponentScan的扫描下)