本文主要分析被 @FeignClient 注解的接口类请求过程中负载均衡逻辑,流程分析使用的源码版本信息如下:
<spring-boot.version>3.2.1</spring-boot.version>
<spring-cloud.version>2023.0.0</spring-cloud.version>
背景
平常我们代码里用@FeignClien注解一个接口类,实现一个远程接口(如下)
@FeignClient(name = ServiceNameConstants.XXX, fallbackFactory = XXXFactory.class)
public interface RemoteXXXService {
@GetMapping("/XXX/getById")
Result<XXX> getById(@RequestParam("Id") String Id);
}
FeignBlockingLoadBalancerClient
这个类是归属spring-cloud-starter-openfeign依赖
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
BlockingLoadBalancerClient
这个类由以下依赖引入
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
todo~~