美文网首页
Eureka源码分析(三) DefaultEurekaServe

Eureka源码分析(三) DefaultEurekaServe

作者: skyguard | 来源:发表于2018-11-09 09:51 被阅读0次

之前我们分析了eureka client的配置,现在我们就来分析一下eureka server的配置。先来介绍一个类DefaultEurekaServerConfig,这个类实现了EurekaServerConfig接口,是EurekaServerConfig的默认实现类。我们来看一下DefaultEurekaServerConfig都有哪些属性

  • 请求认证相关

    • Eureka-Server 未实现认证。在 Spring-Cloud-Eureka-Server,通过 spring-boot-starter-security 模块支持。
    • #shouldLogIdentityHeaders() :打印访问的客户端名和版本号,配合 Netflix Servo 实现监控信息采集。
  • 请求限流相关

    • #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就分析到这里了。

相关文章

网友评论

      本文标题:Eureka源码分析(三) DefaultEurekaServe

      本文链接:https://www.haomeiwen.com/subject/viewxqtx.html