通过Nacos官方文档,我们可以先了解一个大概,本文主要讲客户端是如何将服务注册到Nacos中的!
不难发现客户端注册到Nacos中是通过Http请求的方式,将客户端数据注册到Nacos中的,那么接下来我们刨根问底来拿捏下源码级别的注册逻辑!
客户端依赖
<!--注册中心客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.0.RELEASE</version> </dependency>
注意下版本,不然和我演示的源码可能对不上
Nacos版本
这里Nacos的版本时1.4.1至于是源码启动还是程序包启动都无所谓了,本文只涉及到客户端的注册!
我们客户端以SpringBoot工程为例,那么我们看Nacos客户端注册的流程可以从spring.factories中开始
SpringBoot工程启动后会自动注册spring.factories中配置的类
跟进NacosDiscoveryAutoConfiguration
切入NacosAutoServiceRegistration
NacosAutoServiceRegistration中有个继承AbstractAutoServiceRegistration
切入AbstractAutoServiceRegistration
这里有一个点,就是ApplicationListener,简单说一下,就是实现这个ApplicationListener接口后,会监听一个WebServerInitializedEvent,触发后会调用onApplicationEvent方法!
切入NamingProxy
那么通过这行代码就是往Nacos中注册当前服务信息的!和官网也是能对得上的!