
# Spring Cloud Huawei微服务实例及配置缓存机制
#### 微服务实例缓存机制
![](https://support.huaweicloud.com/devg-cse/zh-cn_image_0000002515756424.png)
Spring Cloud Huawei微服务实例缓存在servicecomb-client中构建及刷新，其中刷新机制如下：
1. 启动阶段不会缓存微服务实例信息，但是微服务就绪后会启动一个异步任务，间隔一定时间根据InstancesCache中的key更新微服务实例信息。
2. 当收到请求后，优先从InstancesCache中获取目标微服务实例缓存信息，若缓存信息不存在，根据应用名+微服务名从注册中心获取实例信息，当成功获取到实例信息后，使用参数中的应用名+微服务名构建唯一key，将实例信息缓存到内存，如果注册中心不存在实例信息，不做实例信息缓存。
3. 定时更新InstancesCache时：
   - 请求注册中心正常响应且实例信息有变化，则刷新对应微服务的实例信息。
   
   - 请求注册中心响应异常。
     - 引擎不存在返回IO异常，结束本次请求。
     
     - 非IO异常，清除当前微服务的缓存实例信息。
       ![](https://support.huaweicloud.com/devg-cse/public_sys-resources/note_3.0-zh-cn.png)
       1.11.12-2021.0.x/1.11.12-2023.0.x/1.11.12-2024.0.x及以上版本在请求异常情况下不再清除实例缓存信息。
       
      
    
 
#### 配置缓存机制
![](https://support.huaweicloud.com/devg-cse/zh-cn_image_0000002515918350.png)
Spring Cloud Huawei采用PULL方式，定时主动从配置中心获取当前微服务配置。
微服务启动阶段从不同配置范围获取当前全量配置，并更新到Spring Environment中进行应用配置管理，启动完成后会启动一个异步任务，定时与配置中心交互拉取配置。配置中心正常响应并存在删除、新增、更新配置时，同步刷新至Spring Environment，并新起一个异步任务等待一定时间下次拉取配置；当请求配置中心异常响应时，不需要更新Spring Environment配置，仅新起一个异步任务等待一定时间下次拉取配置。
