版本介绍
copy几个jar包出来康康把
spring-cloud-starter-alibaba-nacos-config-2021.0.4.0.jar
spring-cloud-starter-alibaba-nacos-discovery-2021.0.4.0.jar
nacos-client-2.0.4.jar
注册流程
- 读取Spring Boot装载配置文件 spring.factories,找到启动类
NacosAutoServiceRegistration; - NacosAutoServiceRegistration 继承 AbstractAutoServiceRegistration,它实现
ApplicationListener 接口; - 实现ApplicationListener接口的 onApplicationEvent 方法,该方法调用 bind() ,然后调用
start() 方法; - start()方法中调用register(),该方法调用 NacosServiceRegistry 的register方法;
- NacosServiceRegistry的register方法内部调用 NacosNamingService 的
registerInstance 方法; - 根据实例的瞬时状态选择不同的proxy执行注册,默认是 gRPC 协议的 NamingGrpcClientProxy 执行注册;
捞一张网上的客户端注册流程图
代码分析
直接找到nacos discovery包下的com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration类,里面有3个关键的bean。
- 实际去做注册动作的bean com.alibaba.cloud.nacos.registry.NacosServiceRegistry
- 包含注册信息的bean com.alibaba.cloud.nacos.registry.NacosRegistration
- 触发注册bean
com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration
代码描述
监听WebServerInitializedEvent时间发起注册,
之后就是顺藤摸瓜到org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration#register方法中直接进入注册主题。
在com.alibaba.cloud.nacos.registry.NacosServiceRegistry#register方法中就是具体的注册流程
注册入口1
注册入口2