Feign调用原理Feign远程调用

Feign调用原理Feign远程调用核心就是通过一系列的封装和处理,将以Java注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVABean,放回给调用者。Feign内置了一个重试器,当HTTP请求出现IO异常时,Feign会有一个最大尝试次数发送请求。LoadBalancerClient对象可以从nacos中基于服务名获取服务实例,然后在工程中基于特点算法实现负载均衡方式的调用。RestTemplate在发送请求的时候会被LoadBalancerInterceptor拦截,作用就是用于RestTemplate的负载均衡,LoadBalancerInterceptor将负载均衡的核心逻辑交给了loadBalancer1、通过@EnableFeignCleints注解告诉springcloud启动FeignStarter组件
FeignStarter会在项目启动过程中注册全局配置,扫描包下所由@FeignClient注解描述的接口,然后由系统底层创建接口实现类JDK代理类,并构建类的对象,然后交给spring管理,注册IoC容器。3、Feign接口被调用时,底层代理对象会将接口中的请求信息通过编码器创建Request对象,基于此对象进行远程过程调用。4、Feign客户端请求对象会经LB进行负载均衡,挑选出一个健康的Server实例instance。5、Feign客户端会携带Request调用远端服务并返回一个响应。6、Feign客户端对象对Response信息进行解析然后返回客户端。开发微服务应用时,在主程序入口添加@EnableFeignClients注解开启对FeignClient扫描加载处理。根据FeignClient的开发规范,需要定义接口并添加@FeignClient注解。当程序启动时会进行包扫描,扫描所有标注了@FeignClient注解的类,并将这些信息注入SpringIoC容器中。当定义Feign接口中的方法被调用时,通过JDK的代理方式来生成具体的RequestTemplate。生成代理时Feign会为每个接口方法创建一个RestTemplate对象,该对象封装了HTTP请求需要的全部信息,如请求参数名、请求方法等信息都在这个过程中确定。然后由RestTemplate生成Request,接着把Request交给Client去处理,这里指的Client可以是JDK原生的URLConnection、Apache的HttpClient、也可以是Okhttp。最后Client被封装到LoadBalanceClient类中,这个类结合loadbalancer客户端负载均衡发起服务间的调用

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值