配置中心和客户端(我们自己的业务工程)实现配置的动态感知一般无外乎两种办法,一种是客户端主动发起pull模式,或者配置中心发起push。
1.nacos作为配置中心和客户端是通过客户端主动发起的pull模式,但是这不是单纯的pull,是一个httppost的长轮询,过期时间默认是30S,什么意思呢,客户端发起一个http请求发给配置中心,配置中心接到了请求那一刻如果正好配置有变化就立即返回变化后的配置。但是如果在这一刻没有变化配置中心不会给客户端返回数据,等到29.5S后配置中心会启动一个延时定时任务,回去检查配置是否有更新。但是我们都清楚如果这29.5S期间,配置修改了难道客户端要过了这个期间才会知道配置修改了么,显然这个是不合理的。nacos采用了发布订阅模式,配置修改了服务端会发布一个事件,这个事件还会有一个监听的地方,这样就达到了动态感知配置的修改。具体重要源码流程请看图片。spring的发布订阅模式可以去百度其他文章。
图片上传不上来,源码解析放到网盘
https://pan.baidu.com/s/1nUCSPaC1cjT-tX8WxMAO5A
e87v
2.spring-config配置的动态感知采用的是消息总线是通过rabbitMq来搞的。这里不详细阐述。