本文收录于专栏 Nacos
推荐阅读:Nacos 架构 & 原理
⚠️:使用的Nacos版本为2.4.0
前言
⚠️⚠️⚠️建议先阅读官方文档中对nacos中配置一致性模型的讲解。⚠️⚠️⚠️
本篇文章主要梳理以下逻辑
- 用户在web页面修改配置之后,服务端处理逻辑
- 服务端如何通知客户端
- 客户端接收到通知之后,如何获取最新的服务端配置
一、修改配置之后,服务端处理逻辑
页面请求接口:/nacos/v1/cs/configs?username=nacos
接口参数:
接口代码位置:config / ConfigController / publishConfig()
主要逻辑:
- 修改
config_info
表中的配置数据 - 发布配置变更事件:
ConfigDataChangeEvent
ConfigChangePublisher.notifyConfigChange(
new ConfigDataChangeEvent(false, configForm.getDataId(), configForm.getGroup(),
configForm.getNamespaceId(), configOperateResult.getLastModified()));
二、服务端对ConfigDataChangeEvent的处理
我们可以看到服务端有两处对此事件做了处理。
AsyncNotifyService
: 处理的nacos-server之间的数据逻辑,其实就是通知其它server配置发生了变更。DumpService
: 处理的就是server本身,以及server和client之间的逻辑。
本次我们只看和客户端相关的DumpService
。
三、DumpService
构造方法中向统一的事件注册中心