版本 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(),
// 配置evictionIntervalTimerInMs
serverConfig.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),
// 配置responseCacheUpdateIntervalMs
responseCacheUpdateIntervalMs);
}
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文章来源:https://www.toymoban.com/news/detail-614311.html
responseCacheUpdateIntervalMs
指定 readOnlyCacheMap 更新的时间间隔,默认 30s文章来源地址https://www.toymoban.com/news/detail-614311.html
到了这里,关于Eureka 学习笔记1:服务端实例缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!