【254期】面试官:来谈谈微服务组件Feign的工作原理吧

【254期】面试官:来谈谈微服务组件Feign的工作原理吧

Feign的工作原理

主程序入口添加了@EnableFeignClients注解开启对FeignClient扫描加载处理。根据Feign Client的开发规范,定义接口并加@FeignClientd注解。

当程序启动时,会进行包扫描,扫描所有@FeignClients的注解的类,并且将这些信息注入Spring IOC容器中,当定义的的Feign接口中的方法被调用时,通过JDK的代理方式,来生成具体的RequestTemplate.

当生成代理时,Feign会为每个接口方法创建一个RequestTemplate。当生成代理时,Feign会为每个接口方法创建一个RequestTemplate对象,该对象封装了HTTP请求需要的全部信息,如请求参数名,请求方法等信息都是在这个过程中确定的。

然后RequestTemplate生成Request,然后把Request交给Client去处理,这里指的是Client可以是JDK原生的URLConnection,Apache的HttpClient,也可以是OKhttp,最后Client被封装到LoadBalanceClient类,这个类结合Ribbon负载均衡发起服务之间的调用。

Feign注解剖析

@FeignClient注解主要被@Target({ElementType.TYPE})修饰,表示该注解主要使用在接口上。它具备了如下的属性:

  • name:指定FeignClient的名称,如果使用了Ribbon,name就作为微服务的名称,用于服务发现。
  • url:url一般用于调试,可以指定@FeignClient调用的地址。
  • decode404: 当发生404错误时,如果该字段为true,会调用decoder进行解码,否则抛出FeignException.
  • configuration:Feign配置类,可以自定或者配置Feign的Encoder,Decoder,LogLevel,Contract。
  • fallback:定义容错的处理类,当调用远程接口失败或者超时时,会调用对应的接口的容错逻辑,fallback指定的类必须实现@Feign标记的接口。
  • fallbacjFactory:工厂类,用于生成fallback类实例,通过这个属性可以实现每个接口通用的容错逻辑们介绍重复的代码。
  • path:定义当前FeignClient的统一前缀。

Feign开启GZIP压缩

Spring Cloud Feign支持对请求和响应进行GZIP压缩,以提高通信效率。推荐:250期面试题汇总

在yml文件需要如下的配置

<!-- https://mvnrepository.com/artifact/cn.springcloud.feign/venus-cloud-feign-core -->
<dependency>
    <groupId>cn.springcloud.feign</groupId>
    <artifactId>venus-cloud-feign-core</artifactId>
    <version>1.0.0</version>
</dependency>

github的地址如下:

https://github.com/SpringCloud/venus-cloud-feign.git

作者:chendom

juejin.cn/post/6844903837543694349

END

十期推荐

【241期】面试官:你了解JVM中的ZGC垃圾收集器吗?
【242期】面试官:Spring AOP有哪些通知类型,它们的执行顺序是怎样的?
【243期】面试官:什么是前缀索引、为什么要用前缀使用、用在什么场景下?
【244期】万字+图解 Redis,面试不用愁了!
【245期】面试官:MySQL发生死锁有哪些原因,怎么避免?
【246期】面试官:说说你对 RabbitMQ 的理解以及使用它的场景
【247期】记一次Java面试中遇到的三个问题及感悟!
【248期】面试官:你能说几个Java8中Stream对列表去重的方法吗?
【249期】关于Java中的异常,面试可以问的都在这里了!
【250期】关于Mybatis知识点,面试可以问的都在这里了!


与其在网上拼命找题? 不如马上关注我们~

【254期】面试官:来谈谈微服务组件Feign的工作原理吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/8052.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!