本文作为一个总结,主要是对Spring Cloud的部分组件原理进行一个提纲挈领的总结。具体的实现,后续有机会分享,网上也有很多。本文主要概括下 Ribbon 和 Feign的原理
Ribbon包括了2个部分
app_name
转具体的ip:port
对于第2点:Ribbon从本质上是利用了RestTemplate
的Interceptor
进行了扩展。
SpringCloud中,consumer
在发起真正请求之前,解析URL中的provider_app_name
,这个是通过Eureka
的DiscoverClient
实现中获取到对应的多个ip和端口组合,然后通过某种负载均衡
算法进行选择,然后通过RestTemplate
的Interceptor
来处理这个映射。
Feign是对接口做文章,在接口上添加注解,消费者通过调用接口的形式进行服务消费。
在Spring体系中,只要是通过调用接口来进行某个操作的,应该都是使用了动态代理
技术,比如MyBatis中通过接口对应到对应的XML中的SQL。
在Spring解析的时候,核心有2个步骤:
不管是第一点还是第二点,里面都大有文章。
写文和平时做笔记不一样,做笔记可以很随意,自己懂就OK。
写文尽可能希望大家都能懂,所以上述细节,有空整理吧!
Spring Cloud没有什么特别新的技术,它定义了一套上层接口,然后利用现有的开源组件进行整合。
如果你是SpringCloud初学者,希望你不要仅仅学习Spring Cloud中某个组件整合后的用法,而是去看看这门技术原生的使用方式。
上述是鄙人一些愚见,很晚了,晚安!