版本 awsVersion = ‘1.11.277’
缓存 | 类型 | |
---|---|---|
registry | ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> | AbstractInstanceRegistry成员变量 |
readWriteCacheMap | LoadingCache | ResponseCacheImpl成员变量 |
readOnlyCacheMap | ConcurrentMap<Key, Value> | ResponseCacheImpl成员变量 |
registry
// com.netflix.eureka.registry.AbstractInstanceRegistry
protected void postInit() {evictionTaskRef.set(new EvictionTask());evictionTimer.schedule(evictionTaskRef.get(),serverConfig.getEvictionIntervalTimerInMs(),// 配置evictionIntervalTimerInMsserverConfig.getEvictionIntervalTimerInMs());
}
class EvictionTask extends TimerTask {public void run() {long compensationTimeMs = getCompensationTimeMs();evict(compensationTimeMs);}// ...
}
evictionIntervalTimerInMs
指定清理未续约服务实例的时间间隔,默认 60s
readWriteCacheMap
// com.netflix.eureka.registry.ResponseCacheImpl
this.readWriteCacheMap =CacheBuilder.newBuilder()// 配置initialCapacityOfResponseCache.initialCapacity(serverConfig.getInitialCapacityOfResponseCache())// 配置responseCacheAutoExpirationInSeconds.expireAfterWrite(serverConfig.getResponseCacheAutoExpirationInSeconds(), TimeUnit.SECONDS)
initialCapacityOfResponseCache
指定 readWriteCacheMap 缓存容量大小,默认 1000
responseCacheAutoExpirationInSeconds
指定 readWriteCacheMap 缓存有效时间,默认 180s
readOnlyCacheMap
// com.netflix.eureka.registry.ResponseCacheImpl
// 配置shouldUseReadOnlyResponseCache
if (shouldUseReadOnlyResponseCache) {timer.schedule(getCacheUpdateTask(),new Date(((System.currentTimeMillis() / responseCacheUpdateIntervalMs) * responseCacheUpdateIntervalMs)+ responseCacheUpdateIntervalMs),// 配置responseCacheUpdateIntervalMsresponseCacheUpdateIntervalMs);
}private TimerTask getCacheUpdateTask() {return new TimerTask() {public void run() {// ... for (Key key : readOnlyCacheMap.keySet()) {CurrentRequestVersion.set(key.getVersion());Value cacheValue = readWriteCacheMap.get(key);Value currentCacheValue = readOnlyCacheMap.get(key);if (cacheValue != currentCacheValue) {readOnlyCacheMap.put(key, cacheValue);}}}};
}
shouldUseReadOnlyResponseCache
指定是否使用 readOnlyCacheMap,默认 true
responseCacheUpdateIntervalMs
指定 readOnlyCacheMap 更新的时间间隔,默认 30s