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注解。
阅读全文