Nacos客户端源码分析

前面已经用两篇文章介绍了如何安装Nacos控制台和Dubbo服务如何发布注册并在Nacos控制台上呈现。今天不再讲这些配置的东西,来点干货,分析Nacos的客户端源码。微服务中心的项目工程如果要注册服务,就需要依赖Nacos的客户端,这在前面已经讲了如何进行pom依赖实现。打开nacos-client的jar包看看里面是什么:

有的同学经常说不知道从哪里开始看源码,今天就教大家从哪里下手。这个工程下总共5个一级目录:config,identify,logger,naming,utils。大家从这几个目录是不是都基本可以猜到是做什么用的。

config:配置

identify:身份验证

logger:日志

naming:?

utils:工具类

经过上面的分析就只有一个我们不知道是什么,既然别的都知道了是什么,而且和主业务无关,那打问号的这个肯定就是Nacos的独门武器。展开后看到core,beat,net更加坚定了我们的猜测。继续往下猜,哪个类是发起服务注册的呢?最外面的一个孤零零的类像不像,NacosNamingService确实很像,点进去看看里面有什么方法嘛。果真就看到registerInstance的方法,打个断点,debug起下微服务项目看断点进不进来。

registerInstance有几个重载的方法依次调用,这里创建了一个实例(instance),一个心跳对象(BeatInfo)。这些我们都不用管,盯住主流程不放,最后通过一个服务器代理对象调用注册服务的方法(registerService),就是我断点的位置。

接着就进入到NamingProxy类的下图的方法:

这是什么,发挥你的想象力,是不是我们平时写controller的时候的restful的path路径。如果不相信这是真的,就去Nacos的官网看看API。

原来就是向服务端发了一个post请求,这个Client你自己就可以写出来吧,我们还需要继续研究源码,看看是通过什么东西把这个post请求发出去的。断点继续往下走:

晕,原来就是用HttpClient调的,组装了一个url地址的请求,里面包含IP、端口和官网提供的api的路径。当然这里的HttpClient不是jdk或者apache的,是阿里自己写的一个类,放在文章开始的项目路径的net包下,大家有兴趣可以自己研读下。

下面我画个调用链的图更好的说明Nacos客户端是怎么把服务注册到服务端的。

今天主要是从源码层面分析了Nacos客户端是如何运作的,主要的思想就是服务端定义了一个http的接口,客户端向服务端发起该接口的post请求,用到的技术就是HttpClient。文后附上我之前写的两篇关于Nacos的文章,希望大家先看看那两篇文章,对于第一次想了解Nacos的同学有帮助。

附录:

Nacos服务端安装和启动

Dubbo+Nacos实现服务注册和发现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值