Nacos2.x 源码架构流程图

nacos2.x  主要流成部分架构流程图,仅供 学习源码的小伙伴们参考!如有错误地方欢迎指正。

目录

分享一个快速找到源码入口的小技巧!

nacos为例:

进入正题

服务注册:

服务健康检查

服务发现

服务订阅

集群数据同步


分享一个快速找到源码入口的小技巧!

nacos为例:

1. 找到pom 引入的坐标,然后在External Libraries 下找到对应的jar 

 2. 找到spring.factories 文件,进入配置类

进入正题

由于图片太大,点击链接查看

nacos2.1x 客户端注册 | ProcessOn免费在线作图,在线流程图,在线思维导图 |ProcessOn免费在线作图,在线流程图,在线思维导图 | nacos2.1x 客户端注册https://www.processon.com/view/link/637252a5e0b34d37c448196e

 

服务注册:

  1. spring-cloud-starter-alibaba-nacos-discovery包的META-INF目录spring.factories文件对应的NacosServiceRegistryAutoConfiguration类里面 对应的@bean 生成,
  2. nacosAutoServiceRegistration 的父类 继承了ApplicationListener,在容器启动时 会加载 nacos配置,解析出 ip 端口 ...
  3. NacosNamingService.registerInstance 会判断 当前注册是持久实例 (http) & 临时实例 (grpc) ,然后请求nacos server 端
  4. 再此之前会先提前建立grpc 心跳通信,

5. nacos server 接收到服务注册事件 之后会 将instiance 添加到注册表中(map)和订阅表中(map),value 为clinet id,然后同时会发布 服务注册事件 服务改变事件 服务元数据事件...

服务健康检查

1.ConnectionManager.start 开启定时任务,3s 执行一次,超过20s 没给服务端正常交互的客户 会加入过期集合里面,然后发送探活机制,如果失败就剔除此客户端,

2.发布客户端链接移除事件,数据同步的其他集群节点,删除订阅表 和注册表

服务发现

1.服务发现是在第一次调用服务端获取的,这个参考ribbon源码

2.NacosNamingService.selectInstances 判断是否为订阅状态,从缓存中读取被订阅的服务数据,如果缓存为空 ,查询本地其他缓存,并开启一个定时执行任务(6s 执行一次,去拉取注册中心数据 更新到实例缓存中)

3.查询本地缓存的过程中也会有一磁盘写入的机制,然后requestToServer 请求grpc服务,请求服务订阅接口

服务订阅

0.SubscribeServiceRequestHandler.handle 事件接收到任务之后先从缓存中 获取订阅服务的 serviceInfo,如果缓存中不存在会创建一个空的serviceInfo,然后更新到serviceDataIndexes缓存中,并且从getAllInstancesFromIndex 获取信息

1. 然后判断是否为订阅事件

2.取消订阅 remove 订阅表内数据,然后发布客户端取消订阅事件

3.为订阅事件 会客户端订阅事件,并且加入到注册表里面

4.ClientServiceIndexesManager.addPublisherIndexes 订阅到事件之后 会发布 服务改变或者 服务订阅事件

5.NamingSubscriberServiceV2Impl.onEvent 接收到事件之后 判断是事件类型,然后放入 nacos 任务线程中

6. 任务线程 根据事件消息 会判断是否需要推送到所有客户端中,还指定的客户端。

7.然后nacos 客户端NamingPushRequestHandler.requestReply 接收到之后更新本地缓存表

集群数据同步

1.DistroClientDataProcessor.onEvent 监听到客户端改变事件,会获取到除自己节点所有集群信息,

2.DistroProtocol.syncToTarget 将变动信息推送到一个task map 内,然后nocos 后台线程会执行 process

3.通过grpc 方式发送其他集群服务

4.DistroDataRequestHandler.handle 其他集群服务 监听到事件之后 会更新本地 服务订阅 注册表,同时发布相关服务事件

持续更新中....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值