![73d59f475a1d33da45fab0953b5c2b57.gif](https://i-blog.csdnimg.cn/blog_migrate/7ce403cebea48dd3c4e0844f5eb91f58.gif)
从以往的源码分析文章的阅读量不难看出,大家都不太喜欢看源码分析类文章,一是枯燥,二是难看懂(可能也是笔者写得不好吧,源码分析类文章确实难写),所以本篇就是总结前两篇文章内容的,结合面试题做个总结。
OpenFeign与Feign的关系
Feign底层实现原理
Ribbon是什么
Ribbon底层实现原理
Ribbon是如何实现失败重试的?
OpenFeign与Feign的关系
feign
不是一个中间件,feign
是spring cloud
组件中的一个轻量级restful
的http
服务客户端。其作用是简化接口的调用,将http
调用转为rpc
调用,让调用远程接口像同进程应用内的接口调用一样简单。
与dubbo
的rpc
远程调用一样,通过动态代理实现接口的调用。feign
通过封装包装请求体、发送http
请求、获取接口响应结果、序列化响应结果等接口调用动作来简化接口的调用。
openfeign
是spring cloud
在feign
的基础上支持了spring mvc
的注解,如@RequesMapping
、@GetMapping
、@PostMapping
等。openfeign
还实现与Ribbon
的整合。
服务提供者只需要提供API
接口,而不需要像dubbo
那样需要强制使用implements
实现接口,即使用fegin
不要求服务提供者在Controller
使用implements
关键字实现接口。
Feign底层实现原理
openfeign
通过包扫描将所有被@FeignClient
注解注释的接口扫描出来,并为每个接口注册一个FeignClientFactoryBea