sping cloud loadBalancer 客户端负载器类型
在 spring cloud loadbalancer
中,主要有两种类型的负载器
- BlockingLoadBalancerClient: 阻塞类型的负载器
- ReactiveLoadBalancer: 非阻塞类型的负载器
BlockingLoadBalancerClient
阻塞类型的负载器主要使用的是 RestTemplate
, 一般这么配置就行
@Configuration
public class MyConfiguration {
@LoadBalanced
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
}
BlockingLoadBalancerClient 通过 BlockingLoadBalancerClientAutoConfiguration
自动装配, 并且同时配置 LoadBalancerInterceptor
拦截器
ReactiveLoadBalancer
非阻塞类型的负载器 使用的是 WebClient
, 一般在使用 WebFlux
或者 spring cloud gateway
的时候会使用到, 一般这么配置
@Configuration
public class MyConfiguration {
@Bean
@LoadBalanced
public WebClient.Builder loadBalancedWebClientBuilder() {
return WebClient.builder();
}
}
ReactiveLoadBalancer 通过 LoadBalancerAutoConfiguration
自动装配,每个 WebClient 配置了ReactorLoadBalancerExchangeFilterFunction
进行负载拦截
注意,如果同时配置了 BlockingLoadBalancerClient 和 ReactiveLoadBalancer, 优先选择 ReactiveLoadBalancer负载器