SpringCloud如何实现负载均衡、服务降级与熔断的快速入门?
摘要:LoadBalancer 负载均衡 负载均衡的实现原理: 在添加@LoadBalanced注解后,会启用拦截器对我们发起的服务调用请求进行拦截,叫做LoadBalancerInterceptor,它实现ClientHttpRequestIn
LoadBalancer 负载均衡
负载均衡的实现原理:
在添加@LoadBalanced注解后,会启用拦截器对我们发起的服务调用请求进行拦截,叫做LoadBalancerInterceptor,它实现ClientHttpRequestInterceptor接口。
默认使用轮询的负载均衡策略,也可以选择随机负载均衡策略
如何修改负载均衡策略?
先创建随机分配策略的配置类(不用加@Configuration)
public class LoadBanancerConfig {
// 将官方提供的RandomLoadBalancer注册为bean
@Bean
public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment, LoadBalancerClientFactory clientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(clientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name);
}
}
修改RestTemplate对应的配置类
@Configuration
// 指定为user-service服务,只要调用此服务,就会使用我们指定的策略
//configuration = LoadBanancerConfig.class 指定我们自定义的策略类
@LoadBalancerClient(value = "user-service",configuration = LoadBanancerConfig.class)
public class BeanConfiguration {
@Bean
// 负载均衡
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
此时就完成了负载均衡策略的修改!
OpenFegin实现负载均衡
Fegin和RestTemplate一样,也是http客户端请求工具,但是它的使用方式更加便捷。
先加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在启动类上加@EnableFeignClients注解。
