Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一

Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一

服务获取和刷新的流程图

Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一

什么时候获取服务

其实当nacos客户端起来之后,并不会去请求服务信息,只是会去做服务注册,配置获取等,那什么时候会获取服务呢,就是第一次请求来的时候,也就是说是懒加载的思想,下面看我慢慢分析。

拦截器拦截RestTemplate

这个就不多说了,以前分析ribbon的时候有讲过,可以看这篇文章
,我就大致的走个流程。
首先是拦截:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
获取负载均衡器:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
创建服务对应的上下文,这里会传入服务名:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一

ribbon的属性源里添加一条值为服务名的属性,key为ribbon.client.name,名字为服务名:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
就是这样,属性源属性后面有用到。
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
然后刷新上下文,RibbonClientConfigurationname被注入为服务名:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
因为ribbon.client.name就是刷新环境前放进属性源里的:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
接着实例化DefaultClientConfigImpl的时候会将服务名放进去:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
赋值给clientName,后面会用到:
Spring Cloud 2.2.2 源码之四十七nacos客户端触发服务刷新原理一
后面就跟我们NacosRibbonClientConfiguration里的注入了,下篇说。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。