Eureka server的三个变量
- registry
- readWriteCacheMap
- readOnlyCacheMap
保存服务注册信息,默认情况下定时每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点,eureka client每30s从readOnlyCacheMap更新服务注册信息,而UI则从registry更新服务注册信息。
三级缓存
- registry 类型:ConcurrentHashMap
实时更新,类AbstractInstanceRegistry成员变量,UI端请求的是这里的服务注册信
- readWriteCacheMap 类型:Guava Cache/LoadingCache
实时更新,类ResponseCacheImpl成员变量,缓存时间180秒
- readOnlyCacheMap 类型:ConcurrentHashMap
周期更新,类ResponseCacheImpl成员变量,默认每30s从readWriteCacheMap更新,Eureka client默认从这里更新服务注册信息,可配置直接从readWriteCacheMap更新
缓存相关配置
- eureka.server.useReadOnlyResponseCache 默认:true
Client从readOnlyCacheMap更新数据,false则跳过readOnlyCacheMap直接从readWriteCacheMap更新
- eureka.server.responsecCacheUpdateIntervalMs 默认:30000
readWriteCacheMap更新至readOnlyCacheMap周期,默认30s
- eureka.instance.leaseExpirationDurationInSeconds 默认:90
清理未续约节点超时时间,默认90s
Eureka Client
Eureka Client存在两种角色:服务提供者和服务消费者,作为服务消费者—般配合Ribbon或Feign (Feign内部使用Ribbon)使用。Eureka Client启动后,作为服务提供者立即向Eureka Server注册,默认情况下每30s续约;作为服务消费者立即向Server全量更新服务注册信息,默认情况下每30s增量更新服务注册信息;Ribbon延时1s向Client获取使用的服务注册信息,默认每30s更新使用的服务注册信息,只保存状态为UP的服务。
-
二级缓存
- localRegionApps 类型:AtomicReference
周期更新,类DiscoveryClient成员变量,Eureka Client保存服务注册信息,启动后立即向Server全量更新,默认每30s增量更新
- upServerListZoneMap 类型:ConcurrentHashMap
周期更新,类LoadBalancerStats成员变量,Ribbon保存使用且状态为UP的服务注册信息,启动后延时1s向Client更新,默认每30s更新
-
缓存相关配置
- eureka.instance.leaseRenewalIntervalInSeconds 默认:30
Eureka Client续约周期,默认30s
- eureka.client.registryFetchIntervalSeconds 默认:30
Eureka Client增量更新周期,默认30s (正常情况下增量更新,超时或与Server端不一致等情况则全量更新)
- ribbon.ServerListRefreshInterval 默认:30000
Ribbon更新周期,默认30s
注意:本文归作者所有,未经作者允许,不得转载