springcloud之微服务Fegin组件原理实现

springcloud常用组件
1、服务注册与发现:Eureka
2、服务网关: Zuul
3、服务负载均衡:Ribbon
4、服务之间调用:Feign
5、服务熔断:Hystrix   ---因官网不继续维护,可以使用阿里提供的Alibaba Sentinel 轻量级的流量控制、熔断降级 Java 库
6、配置中心:config     ---如果不想自己维护,可以使用阿里云nacos作为配置中心



4、Feign组件
Feign的关键机制是使用了动态代理
1、 首先,对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理
2、 接着调用接口的时候,本质就是调用Feign创建的动态代理
3、 Feign的动态代理会根据在接口上的@RequestMapping等注解,来动态构造要请求的服务的地址
4、 针对这个地址,发起请求、解析响应,其实就是http请求的封装
(通过JDK的动态代理来生成RequestTemplate。RequestTemplate中包含请求的所有信息,如请求参数,请求URL等
RequestTemplate生成Request,然后将Request交给client处理,这个client默认是JDK的HTTPUrlConnection)

Feign是和Ribbon以及Eureka紧密协作的
1、 首先Ribbon会从Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口
2、 然后Ribbon就可以使用默认的Round Robin算法(轮询,随机,权重等等),从中选择一台机器
3、 Feign就会针对这台机器,构造并发起请求

springcloud之微服务Fegin组件原理实现_第1张图片

超时重试次数
https://blog.csdn.net/varyall/article/details/88639318

你可能感兴趣的:(架构)