您的位置 首页 > 数码极客

〈feign原理〉spring feign原理

本文作为一个总结,主要是对Spring Cloud的部分组件原理进行一个提纲挈领的总结。

具体的实现,后续有机会分享,网上也有很多。

本文主要概括下 Ribbon 和 Feign的原理

天下事,做则不难,不做定难!

Ribbon

Ribbon包括了2个部分

  1. 负载均衡算法
  2. app_name转具体的ip:port

对于第2点:Ribbon从本质上是利用了RestTemplate的Interceptor进行了扩展。

SpringCloud中,consumer在发起真正请求之前,解析URL中的provider_app_name,这个是通过Eureka的DiscoverClient实现中获取到对应的多个ip和端口组合,然后通过某种负载均衡算法进行选择,然后通过RestTemplate的Interceptor来处理这个映射。

Feign

Feign是对接口做文章,在接口上添加注解,消费者通过调用接口的形式进行服务消费。

在Spring体系中,只要是通过调用接口来进行某个操作的,应该都是使用了动态代理技术,比如MyBatis中通过接口对应到对应的XML中的SQL。

在Spring解析的时候,核心有2个步骤:

  1. 通过接口来动态注册Bean
  2. 对接口方法进行动态代理,比如Feign就是解析@GetMapping 这类注解将其转为对应的Http Get请求。

不管是第一点还是第二点,里面都大有文章。

总结

Spring Cloud没有什么特别新的技术,它定义了一套上层接口,然后利用现有的开源组件进行整合。

如果你是SpringCloud初学者,希望你不要仅仅学习Spring Cloud中某个组件整合后的用法,而是去看看这门技术原生的使用方式。

原创不易,转载请注明出处,感谢关注、评论、收藏!

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“feign原理,spring,feign原理,openfeign原理,feign原理面试,feign原理,csdn”边界阅读