nacos服务发现流程

nacos服务发现流程

前面已经知道nacos服务是怎么注册的了,那么nacos对注册的服务又是怎么发现的呢。
1、 既然我们已经知道nacos服务是怎么注册的了,那么点击服务注册的流程里面,查找到最后想服务端发送请求的地方。
在这里插入图片描述
2、 在最后向服务端发送请求的地方打上断点,调试启动客户端。可以发现客户端最终是通过http请求想服务端发送了一个POST请求。
链接地址:http://192.168.0.60:8848/nacos/v1/ns/instance
在这里插入图片描述
3、 既然我们知道nacos是向服务端发送什么了,那么在服务端源码中找到接收客户端服务注册的地方,最终找到了InstanceController中的register方法
在这里插入图片描述
4、 根据代码可以看出。注册方法中只做调用ServiceManager中的registerInstance方法,并在调用前会将客户端传过来的参数信息封装成一个Instance实例
在这里插入图片描述
5、 点击进入registerInstance方法,处理了两个流程,创建了一个服务,添加了一个实例
在这里插入图片描述
6、 先看看创建服务的流程,点击createEmptyService,发现其实际上是在服务当前服务名称不存在时候才会去创建一个服务,继续调用putserviceAndInit方法。
在这里插入图片描述
7、 点击查看putServiceAndInit方法,在该方法中做了几件事情putService,服务的init和集群之间一致性的处理
在这里插入图片描述
8、 init是处理与客户端的健康检查,consistencyService.listen是用于一致性处理的,服务发现的流程中不细描述,点击查看putService,
在这里插入图片描述
9、 发现最终讲服务放入了一个serviceMap中,该map维护了一个键为namespace,值为一个存放服务名称为键,服务为值的map
在这里插入图片描述
10、 这样一个服务就创建完成,下面在来查看实例的创建流程,回到ServiceManage当中的registerInstance,查看添加实例的流程 addInstance
在这里插入图片描述
11、 点开addInstance方法,主要存在两个处理,一个是去获取所有的实例列表,一个是处理所有实例的流程
在这里插入图片描述

12、 获取实例列表暂时不描述,点击处理实例的方法consistencyService.put(),
consistencyService这里有三个实现,这里会根据key的值的参数判断最终是走的哪个实现,最终会走到DistroConsistencyServiceImpl
在这里插入图片描述
13、 打开distroConsistencyServiceImpl的put方法,一个是处理实例的方法,一个是处理实例最终一致性的同步任务
在这里插入图片描述

14、 点卡onput方法,发现实例最终放入到Datum当中并将Datum放入到DataStore当中
在这里插入图片描述

15、 整个服务流程就已经处理完了,这里只整理了服务的发现流程。以上都是自己在学习nacos源码时整理的笔记,不一定正确。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值