网站首页 > 博客文章 正文
Nacos服务注册先?还是Tomcat启动先?
当一个微服务程序启动的时候,到底是先进行的服务注册还是先启动的Tomcat?我们知道在一个Spring Cloud程序里面,如果想要用Nacos去进行服务注册和发现,需要引入starter的依赖,而它其实对应的就是一个Jar,而这个Jar里面就去定义了很多的自动配置类。
这些自动配置类里面有一个跟服务注册有关系的自动配置类,而这个类里面就定义了一个很核心的服务注册的Bean,而我们来看Bean它其实就是实现的这个类而不是 MOS 的Bean BOX JanuaryP BOX,这个类它并不是Nacos实现的,而是Spring Cloud提供的,相当于也是一种规范。
这个类它实现的ApplicationListener的接口,从这里可以看出其实就是要去监听WebServerlnitializedEvent的事件。在这个类里面它其实就实现了onApplicationEvent的方法,从而可以去处理这个事件,而一旦有了这个事件过来就会调用bind方法,而start方法就会去调用register方法。
这个register的方法本身它是有自己的实现的,但是像刚刚看到的Nacos的类,它其实就重写了register的方法,所以说这里表达的意思是Spring Cloud其实定义了服务注册应该在什么时候去发生,但是具体怎么注册的可以由Nacos或者说Eur珊珊自己来实现具体的注册的流程。
但是时间点是由Spring Cloud定义的。我们再回头来看,从这我们就可以看出只要什么时候发布了这个事件,那么就会触发服务注册的流程。这个事件它到底什么时候发布的?我们不妨在这里打一个断点,然后直接启动一下程序看一下,进到断点的调用链路是在什么时候过来的?
首先这中间有一个比较关键的代码就是这里是dot,所以说这个start,它里面就会去发布刚刚说的这个事件。
starstar其实是属于WebServer StartStop Lifecycle这个类里面的。大家对spring里面的Lifecycle机制比较熟应该就立马能够想到不熟。没关系。
再看star的方法,它又是在什么时候调用的?其实它是在Spring容器的finish refresh方法里面。比如说这个方法里面会来调用代码,而代码就会获取life cycle,然后去调用start的方法。
并且再看这个方法的下面就会去发布一个比较熟悉的事件,是Spring容器启动完成的事件。所以可以这么理解,当我们在四倍容器启动的时候,当执行这行代码的时候就会去调到四大的方法从而去发布事件。可以大概理解为事件发布完了之后才会发布contextRefreshed的事件。
所以这个注意。
·但是我们再看,其实在事件发布之前这里还有一个start,大家对WebServer比较熟就应该能够理解。其实SpringBoot里面的WebServer其实表示的是tomcat或者jetty或者undertow等等。具体就看你当前用的是什么。比如当前用的是Tomcat,那么它其实对应的就是Tomcat。
所以从这里也可以看出,其实它就是在启动完Tomcat之后才会发布事件。而一旦发布事件其实就会触发nacos的服务注册。所以说这行代码就是我们想要的答案。
喜欢就点个关注吧。
猜你喜欢
- 2024-10-01 微服务学习笔记(微服务怎么学)
- 2024-10-01 干货:SpringBoot集成Nacos,填坑篇
- 2024-10-01 记一次把Nacos做成服务并开机启动
- 2024-10-01 Nacos 配置中心与注册中心(nacos配置中心连接超时)
- 2024-10-01 小白入门必知必会-Nacos单机安装(nacos入门教程)
- 2024-10-01 windows系统 安装nacos服务注册与发现中心
- 2024-10-01 网络环境问题导致的nacos集群故障
- 2024-10-01 分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义
- 2024-10-01 Nacos你真的理解了吗(nacos百科)
- 2024-10-01 java微服务环境配置——注册中心 配置中心Nacos
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)