这篇文章重点介绍,我们在 Nacos 配置中心填写完应用程序的配置信息之后,点击发布,Nacos 服务端具体做了哪些事情,以及他们的原理。
服务端入口
我们在 Nacos 的配置填写界面填过配置信息之后,点击发布按钮,就会把这些内容提交到服务端。
通过浏览器抓包工具,找到请求接口URL:/nacos/v1/cs/configs 。根据这个关键字直接搜索到服务端入口:ConfigController#publishConfig。
查阅服务端入口代码,发现服务端主要做了三件事情:参数合理性校验、配置数据更新到数据库、打印日志。
数据存储到数据库
数据校验通过之后,会调用EmbeddedStoragePersistServiceImpl#insertOrUpdate进行数据存储。
具体流程:首先查询数据库是否已经存储过这份配置内容,没有的话新加入,有的话就更新。
发布事件
数据存储完毕之后,会接着发布 ConfigDataChangeEvent 事件。这个事件负责数据变更之后,再同步数据到Nacos 集群中的其他机器。
同步数据处理完成的时候,紧接着发布 LocalDataChangeEvent 事件,负责通知监听的Nacos Client,服务端配置数据发生了变更。
LongPollingService 注册和监听LocalDataChangeEvent这个事件,构建DataChangeTask任务处理。
服务端数据变更的这个时刻,如果有订阅的客户端在监听,会收到服务端响应。如果是 客户端是V1版本的话,会发送一个监听请求ConfigController#listener ,服务端在请求超时之间的这段时间内,一旦数据有变更,会及时返回给客户端。