一、主流程-流程图
简要流程说明,后面源码分析
备注:一个 Namespace 对应一个 RemoteConfigRepository 。多个 RemoteConfigRepository ,注册到全局唯一的 RemoteConfigLongPollService 中
- Client初始化后没5分钟定时向Config-Service同步配置;
- 同时向RemoteConfigLongPollService 注册长轮循,向Config-Service发起长轮循(长轮循参考)
- 用户更新发布配置后通知Admin-Service(入库)
- Admin-Service每秒500条获取更新配置,推送Config-Serivce(监听者们),监听者设置第2步的返回值结束长轮循,Client接收到通知实时查询Config-Serivce变更的配置,放入内存
二、源码解析
1、RemoteConfigRepository:远程Repository,实现从ConfigService拉取配置,并缓存,支持实时,定时
2、ConfigController:configs/{appId}/{clusterName}/{namespace}:提供配置读取功能
3、RemoteConfigLongPollService:远程配置长轮循服务,负责长轮循ConfigServer变更通知,当有更新时立即轮循触发更新
4、NotificationControllerV2:notifications/v2:实现长轮循,监听配置变更、返回,结束长轮循
5、DatabaseMessageSender:变更配置入库,清理
6、ReleaseMessageScanner:扫描变更配置,触发监听者们
公众号主要记录各种源码、面试题、微服务技术栈,帮忙关注一波,非常感谢