负载均衡
LoadBalancer
过程
在添加 @LoadBalanced 注解后,会启动拦截器对发起的服务调用请求进行拦截,叫做 LoadBalancerInterceptor,
它实现了 ClientHttpRequestInterceptor 接口
配置
第一种
将官方提供的 RandomLoadBalancer 注册为 Bean(不需要加 @Configuration)
1 2 3 4 5 6 7
| public class LoadBalancerConfig { @Bean public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer (Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) { String name = environment.getProperty(PROPERTY_NAME); return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name); } }
|
指定对应的服务为负载均衡策略
1 2 3 4 5 6 7 8 9
| @Configuration @LoadBalancerClient(value = "userService", configuration = LoadBalancerConfig.class) public class BeanConfiguration { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } }
|
OpenFeign
配置
添加依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>4.0.1</version> </dependency>
|
在启动类上添加注解
1 2 3 4 5 6 7
| @SpringBootApplication @EnableFeignClients public class BorrowApplication { public static void main(String[] args) { SpringApplication.run(BorrowApplication.class); } }
|
创建对应服务的接口类