微服务如何向Nacos进行注册及心跳检测?James带你从源码一步步深入分析
大家好, 我是James, 最近整理了一下客户端微服务向Nacos注册及心跳的源码分析, 希望对大家学习有帮助, 源码可以找我的助理要一下哈v:lzc1314592首先下载好Nacos的源码关于源码怎么导入到maven, 在预习资料有个文档,写的很清楚Nacos源码分析访问nacos启动业务服务然后再停掉一个服务发现变成1了如果客户端访问刚关闭的那台服务, 是不是会报错呢?有可能还会调到已停的服务
大家好, 我是James, 最近整理了一下客户端微服务向Nacos注册及心跳的源码分析, 希望对大家学习有帮助, 源码可以找我的助理斯琪要一下哈v: 2996372122 并备注是看我的博客来要的资料.
首先下载好Nacos的源码
关于源码怎么导入到maven, 在预习资料有个文档,写的很清楚, 可以找我的助理
Nacos源码分析
访问nacos
讲源码前, 我先抛一个问题, 如果客户端访问一个刚刚关闭的服务, 是不是会报错?
你的答案是什么?
正确答案是: 有可能还会调到已停的服务, 怎么处理?其实就是做了一个服务降级的处理
所以互联网线上一般对非核心非关键的服务都要做降级/熔断处理
OK, 那我们看看到底如何注册到Nacos的, 服务下线后,如何收到心跳, 客户端如何发现的等问题
我们来分析一下客户端服务如何向Nacos注册的?
会去扫描yml配置
找到nacos服务地址, 进行注册
我们点进去看看这个包依赖了什么内容?
点击进入
打开jar包也可以看到依赖关系
再点开META-INF目录
有个spring.factories, 这个是干什么用的呢? 这个不知道的同学要把springboot底层自动装配原理要重点看一下啦
其实就是springboot在启动的时候, 会加载spring.factories里的配置
Nacos客户端最终通过这个类完成注册的, 怎么找到这个类的呢
点进去 看一下
如果对springboot稍微熟悉点的, 其实就是看auto自动装配初始化的那些bean
不难发现, NacosAutoServiceRegistration就是我们客户端向nacos进行服务注册的类
点进看一下
点进父类
点进bind方法
OK继续阅读
点进start方法
我们读源码要学会读主线源码, 像 一些if都是分支代码, 你第一遍看的时候可以先跳过
但不是说不看, 你后面可以看
看源肯定不是一遍的
Ctrl+t查看源码
点第1个, 进入register方法的实现
再点进
可以打开Instance看一下, 和官网做个对比
再回到 register
点进去看一下
再点
再点进
这就是客户端注册 的代码, 对比一下官网的地址是否一样?
不难发样就是拼这么个请求路径
这个客户端注册类是不是写在nacos-client.jar里, 这也是我们为什么要引入这个jar的原因
同时NacosNamingService也是在client包里, nacos直接把这个jar包丢给我们的业务系统, 直接调用就可以向nacos-server注册, 这样说明白了吧
但这个地方要注意一下
在注册之前
这个if逻辑要看一下, 这段代码跟心跳有关
我们上面讲的心跳还记得不
我们先看一下官网讲的心跳接口
再看一下我们的代码
再回头看, true表示为临时实例
默认是临时实例, 微服务架构一般默认都是临时的, 持久化的实例效率不高
再点进去
再点进去
再点sendBeat方法
大家看到没, 这里就是去调用Nacos服务端的http心跳接口了, 简单不?
所以我经常讲, 你如果读了Spring源码, 后面的所有框架源码都势如破竹, 非常简单.
更多推荐
所有评论(0)