目 录CONTENT

文章目录

Nacos解析

aprilz
2023-03-08 / 0 评论 / 0 点赞 / 1,222 阅读 / 678 字

Nacos源码中的注册表结构

注册示例:POST /nacos/v1/ns/instance
注册代码:nacos-naming中InstanceController中register方法
调用ServiceManager.registerInstance(namespaceId,serviceName,instance)。

  • 在ServiceManager中维护了Map<String,Map<String,Service>> serviceMap = new ConcurrentHashMap<>();
  • 第一个key是namespaceId,第二个key是group拼接服务名(group::serviceName)
  • 在Service中维护了Map<String,Cluster>,key就是集群名称
  • 在Cluster中维护了Set,具体是实例

image-1678246556342

Nacos作为一个第三方服务,提供客户端注册发现和配置管理热更新等功能(集合eureka,config,bus等多个SpringCloud组件功能整合)
下面主要说明作为第三方服务注册表的功能流程:

客户端启动,发送一个Post请求到Nacos,然后注册自身到nacos中,
按照默认5s一次发送Put请求,心跳机制续约自身健康状态(三次周期15s没有获取心跳机制则置为不健康,六次周期30s则下线)。
其他客户端定期发送Get请求获取Nacos上保存的注册表信息(也就是图上的serviceMap),
刷新本地缓存注册实例表,内部服务在需要请求其他客户端时,通过ribbon选定的负载均衡策略请求到具体的实例,获取到请求数据返回。

文章列表

基础知识点

部分参考:
https://github.com/secbr/nacos-learn
https://reurl.cc/GeexoA

0

评论区