之前我们分析了eureka client的配置,现在我们就来分析一下eureka server的配置。先来介绍一个类DefaultEurekaServerConfig,这个类实现了EurekaServerConfig接口,是EurekaServerConfig的默认实现类。我们来看一下DefaultEurekaServerConfig都有哪些属性
-
请求认证相关
- Eureka-Server 未实现认证。在 Spring-Cloud-Eureka-Server,通过
spring-boot-starter-security
模块支持。 -
#shouldLogIdentityHeaders()
:打印访问的客户端名和版本号,配合 Netflix Servo 实现监控信息采集。
- Eureka-Server 未实现认证。在 Spring-Cloud-Eureka-Server,通过
-
请求限流相关
-
#isRateLimiterEnabled()
:请求限流是否开启。 -
#isRateLimiterThrottleStandardClients()
:是否对标准客户端判断是否限流。标准客户端通过请求头(header
)的"DiscoveryIdentity-Name"
来判断,是否在标准客户端名集合里。 -
#getRateLimiterPrivilegedClients()
:标准客户端名集合。默认包含"DefaultClient"
和"DefaultServer"
。 -
#getRateLimiterBurstSize()
:速率限制的 burst size ,使用令牌桶算法。 -
#getRateLimiterRegistryFetchAverageRate()
:增量拉取注册信息的速率限制。 -
#getRateLimiterFullFetchAverageRate()
:全量拉取注册信息的速率限制。
-
-
获取注册信息请求相关
-
#shouldUseReadOnlyResponseCache()
:是否开启只读请求响应缓存。响应缓存 ( ResponseCache ) 机制目前使用两层缓存策略。优先读取只读缓存,读取不到后读取固定过期的读写缓存。 -
#getResponseCacheUpdateIntervalMs()
:只读缓存更新频率,单位:毫秒。只读缓存定时更新任务只更新读取过请求 (com.netflix.eureka.registry.Key
),因此虽然永不过期,也会存在读取不到的情况。 -
#getResponseCacheAutoExpirationInSeconds()
:读写缓存写入后过期时间,单位:秒。 -
#getRetentionTimeInMSInDeltaQueue()
:租约变更记录过期时长,单位:毫秒。默认值 : 3 * 60 * 1000 毫秒。 -
#DeltaRetentionTimerIntervalInMs()
:移除队列里过期的租约变更记录的定时任务执行频率,单位:毫秒。默认值 :30 * 1000 毫秒。
-
-
自我保护机制相关
#shouldEnableSelfPreservation()
:是否开启自我保护模式。#getRenewalPercentThreshold()
:开启自我保护模式比例,超过该比例后开启自我保护模式。#getRenewalThresholdUpdateIntervalMs()
:自我保护模式比例更新定时任务执行频率,单位:毫秒。
-
注册的应用实例的租约过期相关
-
#getEvictionIntervalTimerInMs()
:租约过期定时任务执行频率,单位:毫秒。
-
-
Eureka-Server 远程节点( 非集群 )读取相关
-
#getRemoteRegionUrlsWithName()
:RemoteRegionRegistry。-
key
:Eureka-Server 区域(region
) -
value
:Eureka-Server 地址
-
-
#getRemoteRegionAppWhitelist()
:RemoteRegionRegistry。 -
#getRemoteRegionRegistryFetchInterval()
:RemoteRegionRegistry。 -
#getRegistrySyncRetries()
:Eureka-Server 启动时,从远程 Eureka-Server 读取失败重试次数。 -
#getRegistrySyncRetryWaitMs()
:Eureka-Server 启动时,从远程 Eureka-Server 读取失败等待(sleep
)间隔,单位:毫秒。 -
#getRemoteRegionFetchThreadPoolSize()
:RemoteRegionRegistry。 -
#disableTransparentFallbackToOtherRegion()
:是否禁用本地读取不到注册信息,从远程 Eureka-Server 读取。
-
-
Eureka-Server 集群同步相关
-
#getMaxThreadsForPeerReplication()
:同步应用实例信息最大线程数。 -
#getMaxElementsInPeerReplicationPool()
:待执行同步应用实例信息事件缓冲最大数量。 -
#getMaxTimeForReplication()
:执行单个同步应用实例信息状态任务最大时间。 -
#shouldSyncWhenTimestampDiffers()
:是否同步应用实例信息,当应用实例信息最后更新时间戳(lastDirtyTimestamp
)发生改变。 -
#getWaitTimeInMsWhenSyncEmpty()
:Eureka-Server 启动时,从远程 Eureka-Server 读取不到注册信息时,多长时间不允许 Eureka-Client 访问。 -
#getPeerEurekaNodesUpdateIntervalMs()
:Eureka-Server 集群节点更新频率,单位:毫秒。
再来看一下DefaultEurekaServerConfig的init方法
-
// 初始化 配置文件对象
String env = ConfigurationManager.getConfigInstance().getString(EUREKA_ENVIRONMENT, TEST);
ConfigurationManager.getConfigInstance().setProperty(ARCHAIUS_DEPLOYMENT_ENVIRONMENT, env);
String eurekaPropsFile = EUREKA_PROPS_FILE.get();
try {
// ConfigurationManager
// .loadPropertiesFromResources(eurekaPropsFile);
ConfigurationManager.loadCascadedPropertiesFromResources(eurekaPropsFile);
} catch (IOException e) {
logger.warn("Cannot find the properties specified : {}. This may be okay if there are other environment "
+ "specific properties or the configuration is installed with a different mechanism.", eurekaPropsFile);
}
}
DefaultEurekaServerConfig就分析到这里了。