由于远程调用
-
用RestTemplate请求注册中心获取微服务地址列表
-
用RestTemplate给对方服务的某个地址发送请求
每次调用都要请求两次,会非常耗费性能
所以
第一次获取实例列表之后,缓存一下,就不用再获取了
|
而实例缓存要做的就是,和注册中心做一个同步/实时更新,如果有一个实例在注册中心被删除了,就从缓存中剔除出去这个实例

这个实例缓存存在本地内存中
缓存更新机制
-
拉取+长轮询:客户端默认每60秒拉取一次全量实例,同时通过长轮询(默认30秒)监听实例变更,实时更新缓存。
-
健康检查:Nacos Client会对实例做健康检查(默认心跳间隔5秒,不健康的实例会从可用缓存中剔除.
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: public
heart-beat-intervel: 5000 #实例心跳间隔
heat-beat-timeout: 15000 # 心跳超时时间(实力被标记为不健康的阈值)
refresh-intervel: 60000 # 每次拉取实例的事件
naming-polling-timeout: 30000 #长轮询监听实例变更,数值越小,实时性越高,网络交互越频繁