Nacos Config Server核心类如下图:
PersistService - 数据库访问服务,封装了所有SQL操作
ConfigService - 本地文件 & 内存Cache 数据结构维护
DumpService - 通过PersistService & ConfigService将配置信息dump到本地
AsyncNotifyService - 配置入库之后,响应ConfigDataChangeEvent发起/dataChange调用,触发dump操作
LongPollingService - 管理长轮训client,主要利用了Servlet 3.0中的AsyncContenxt机制
ConfigController - 处理config获取/订阅/变更相关的http请求
CommunicationController - 处理数据同步(dump)请求
Config Server配置新建/更新的调用关系如下图:
整个流程分为两大部分:
- 入库。插入mysql数据库,发起ConfigDataChangeEvent,调用所有server上的/dataChange接口。
- dump。server响应/dataChange请求,异步dump数据库配置信息到本地。