1、功能介绍

nacos 通讯的机制全部由SpringMVC Controller支持

1.1、注册中心

1.1.1、服务注册

使用注解 @EnableDiscoveryClient。通过Nacos Client 提供的方法向 Nacos Server 发送注册请求
NacosDiscoveryAutoConfiguration 配置类 NacosAutoServiceRegistraion

Server提供的 api 接口 InstanceController类
心跳接口 /nacos/v1/ns/instance/beat#PUT
注册接口 /nacos/v1/ns/instance#POST 心跳检测 也可以完成注册功能

1.1.2、服务发现

服务发现
ServiceController 类 (/nacos/v1/ns/instance/list#GET) 获取服务实例的信息
serviceMannager .registerInstance
serviceMannager .gerService

基于Ribbon 进行服务发现的
updateListOfServers
serviceInfoMap.get(key)

1.2、配置中心

1.2.1、功能描述

动态加载 、动态感知配置文件的变化

1.2.2、配置信息的形式

配置中心的信息 在spring ioc 或者 springboot 中都是通过配置类 保存的信息 key-value。
配置文件在程序中是以配置类的形式存在的。
比如:
NacosConfigBootStrapConfiguration配置类
NacosConfigProperties 配置属性信息
NacosConfigSourceLocator属性资源定位器

1.2.3、不同项目配置文件

配置文件的隔离,不同的项目会读取自己感兴趣、相关的配置文件。
configServer.getConfig(dataID,group,timeout) / api ->/v1/cs/configs GET params

nacos 会将配置文件保存在本地,作为缓存。
nacos 配置文件持久化可以选择 MySQL
项目加载配置文件的流程:加载共享配置信息、加载扩展配置信息、加载应用配置信息

1.2.4、动态感知远程配置文件的变化

配置文件的核心功能

在 Config Client 中如何 感知 Config Server 中信息的变化?
在 Client 端开启线程池 进行长轮询任务,查找最近发生变化的配置文件的key,根据本地配置信息的MD5值和服务器的MD5值进行比较,如果不一样就是发生变化了。checkUpdateDataIds() 拿到key 进行获取最新的配置信息。注册事件监听,执行回调方法 onEvent # LocalDataChangeEvent 类。服务端的类 监听事件修改机制,进行长轮询之间的响应。 :::warning 啥是长轮询:client 端 和 server端进行 http 连接,设置超时时间,在超时时间范围内不会进行返回,在server端的线程一直处于活动状态,直到server端找到了client端的相关业务数据。

和长连接的区别:长连接 连接不会断开,会有心跳续约的机制。 :::

1.3、功能使用

未完….

2、核心源码分析

未完….

3、核心技术分析

未完….