源码版本及下载
此次源码版本为1.4.1,2.x版本在服务请求时使用了grpc的方式,所以先以1.4.1版本学习,后续再看2.x版本。
源码下载地址:: link
打开页面后,下拉到最下面,下载nacos-1.4.1.zip,解压导入idea即可。
服务注册核心流程图(看不清请双击打开大图)
此图主要是对核心注册流程进行了大概梳理,可以在后续详细看源码时配合互补。文章来源:https://www.toymoban.com/news/detail-408457.html
源码详解
客户端注册源码
在微服务使用nacos需要在pom文件中引入依赖:文章来源地址https://www.toymoban.com/news/detail-408457.html
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
- 开始分析客户端源码
SpringCloud这一套组件都是基于SpringBoot开发的,那么SpringBoot引入其它组件的方式是什么呢?
自动装配
所以第一步,我们先找它的在自动装配类。
打开文件:
由类名推断服务注册的自动装配类为:
com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration
我们打开此类:
对应我画的流程图,我们重点关注第一个和第三个bean。
先看NacosAutoServiceRegistration。
当Springboot启动时,会发布事件。我们来看NacosAutoServiceRegistration,继承了AbstractAutoServiceRegistration,
在看AbstractAutoServiceRegistration类,我们发现它实现了ApplicationListener。
当我们实现了ApplicationListener时,我们就需要实现它的onApplicationEvent方法。
public void onApplicationEvent(WebServerInitializedEvent event) {
this.bind(event);
}
/** @deprecated */
@Deprecated
public void bind(WebServerInitializedEvent event) {
ApplicationContext context = event.getApplicationContext();
if (!(context instanceof ConfigurableWebServerApplicationContext) || !"management".equals(((ConfigurableWebServerApplicationContext)context).getServerNamespace())) {
this.port.compareAndSet(0, event.getWebServer().getPort());
this.start();
}
到了这里,关于微服务学习-SpringCloud -Nacos (服务注册源码学习)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!