Spring Cloud 实现配置加载

329 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

动态监听有两种方式触发连接返回结果:

  • 在等待29.5s后触发自动检查机制,不管配置有没有发生变化,都会把结果返回到客户端。而29.5s是长连接保持的时间
  • 在29.5s内任意一个时刻,通过Nacos 控制台或API的方式修改配置,会触发一个事件机制,监听到该事件的任务会遍历allSubs队列,找到发生变更的配置项对应的Client长轮询任务,把变更配置通过该任务中的连接进行返回。

image-20211019223044752.png

Nacos 长轮询机制保证了客户端实时感知配置修改,也降低了服务端的存储连接信息消耗的内存资源压力,长连接的会话时间默认是30s。

Spring Cloud 实现配置加载

Spring Cloud是基于Spring 来扩展的,Spring 提供了Environment,它抽象了一个Environment来表示Spring 应用环境配置,整合各种外部环境,并且提供统一访问方法getProperty(String key)。

在Spring启动时,将配置加载到Environment中,当创建一个Bean时,从Environment中把一些属性值通过@value注解形式注入业务代码。

而在Spring Cloud 中,实现统一配置管理并且动态刷新配置,需要解决问题如下:

  • 如何将远程服务器上的配置加载到Environment
  • 配置修改时,如何将最新配置更新到Environment中,保证配置修改时可进行属性值的动态刷新。