Eureka Client配置详解
这次我们来详细聊聊eureka client服务的配置
概述
Eureka 客户端的配置分为两大类:应用级配置和实例级配置以及client配置。分别是以下几个类:AutoServiceRegistrationProperties,CloudEurekaInstanceConfig以及EurekaClientConfig
AutoServiceRegistrationProperties
AutoServiceRegistrationProperties比较简单:
@ConfigurationProperties("spring.cloud.service-registry.auto-registration")
public class AutoServiceRegistrationProperties {
/** 是否自动启用注册. 默认为true*/
private boolean enabled = true;
/** 是否将manager注册为服务, defaults to true */
private boolean registerManagement = true;
//在没有AutoServiceRegistration这个bean是否快速失败(即程序启动时就报错),默认为false
private boolean failFast = false;
//省略getter,setter
}
这类配置都直接在application.yml中配置即可
CloudEurekaInstanceConfig
我们先看EurekaInstanceConfig这个类中的配置:
属性 | 类型 | 作用 |
---|---|---|
instanceId | String | 该服务实例的唯一标识,默认是{spring.cloud.client.hostname}:{spring.application.name}:{server.port} |
appname | String | 注册在eureka上的应用名,默认使用你的spring.application.name配置 |
appname | String | 注册在eureka上的应用名,默认使用你的spring.application.name配置 |
instanceEnabledOnit | boolean | 是否eureka注册之后立刻接收流量,有时候应用需要进行一些预处理,一般配合config的自动刷新使用.默认true(注:在如果一个服务只有一个实例的话,不起作用,因为要优先保证请求处理) |
nonSecurePort | int | 接收流量的非加密端口(一般是http端口),默认是80 |
securePort | int | 接收流量的加密端口(一般是https端口),默认是443 |
nonSecurePortEnabled | boolean | 是否启动不加密端口 |
securePortEnabled | boolean | 是否启动加密端口 |
leaseRenewalIntervalInSeconds | int | 租约更新间隔(心跳),单位:秒,默认是30 |
virtualHostName | String | 虚拟主机名, 默认是{spring.application.name},服务发现通过该值来查找服务 |
secureVirtualHostName | String | 虚拟主机名, 默认是{spring.application.name},服务发现通过该值来查找服务(启动TSL时使用) |
metadataMap | Ma |
服务实例的metadata信息,可以发送到eureka server,并被其他实例使用。(携带自定义的k,v) |
dataCenterInfo | String | 服务实例部署的数据中心,如果存在多数据中心的话有用,默认为:MyOwn |
ipAddress | String | 服务实例的ip地址 |
statusPageUrlPath | String | 相对的状态页面url路径,默认是/info |
statusPageUrl | String | 绝对的状态页面url路径,默认是http://{ip}:{port}/info |
homePageUrlPath | String | 绝对的Home页面url路径,默认是http://{ip}:{port}/info |
statusPageUrlPath | String | 相对的状态页面url路径,默认是/ |
statusPageUrl | String | 绝对的状态页面url路径,默认是null |
healthCheckUrlPath | String | 相对的健康检查url路径,默认是/health |
healthCheckUrl | String | 绝对的健康检查url路径,默认是http://{ip}:{port}/health |
secureHealthCheckUrl | String | 相对的安全的健康检查url,默认为null |
namespace | String | 默认为eureka |
在CloudEurekaInstanceConfig中有一个配置项:
属性 | 类型 | 作用 |
---|---|---|
instanceStatus | InstanceInfo.InstanceStatus | UP:已经准备好接收流量,DOWN:不再接受流量,健康检查返回的结果是失败,STARTING:准备完成初始化,不接收流量,OUT_OF_SERVICE:有意的关闭流量,UNKNOW.默认为UP |
EurekaClientConfig
属性 | 类型 | 作用 |
---|---|---|
registryFetchIntervalSeconds | int | 指示从eureka服务器获取注册表信息的频率(以秒为单位)。 |
instanceInfoReplicationIntervalSeconds | int | 实例信息复制间隔(单位:秒),默认30 |
initialInstanceInfoReplicationIntervalSeconds | int | 实例初始化后经过多长时间复制信息到eureka服务器(单位:秒),默认40 |
eurekaServiceUrlPollIntervalSeconds | int | 轮训eureka server信息变更的时间间隔(单位:秒),eureka server信息变更后,eureka client应该知道,默认是300 |
proxyPort | String | eureka server代理端口如果存在,默认null |
proxyHost | String | eureka server代理host如果存在,默认null |
proxyUserName | String | eureka server代理用户名如果存在,默认null |
proxyPassword | String | eureka server密码如果存在,默认null |
shouldGZipContent | boolean | 来自eureka server的注册信息是否需要压缩以便获得最佳的网络流量,默认true |
eurekaServerReadTimeoutSeconds | int | 从eureka server读取超时之前等待多久(单位:秒),默认8秒 |
eurekaServerConnectTimeoutSeconds | int | 从eureka server连接超时之前需要等待多久(单位:秒)。注意:客户端中的连接由HttpClient连接,并且此设置会影响实际的连接创建以及从池中获取连接的等待时间 |
backupRegistryImpl | String | 从eureka server读取超时之前等待多久(单位:秒),默认8秒 |
eurekaServerTotalConnections | int | 获取从client到所有server允许的连接总数。,默认200 |
eurekaServerTotalConnectionsPerHost | int | 获取从client到server host所允许的连接总数。,默认50 |
eurekaServerURLContext | String | 当eureka server列表来自DNS解析时,获取用于构建service url(联系eureka server)的上下文,当配置shouldUseDnsForFetchingServiceUrls为true时起作用 |
eurekaServerPort | String | 当eureka server列表来自DNS解析时,获取用于构建service url(联系eureka server)的服务端端口,,当配置shouldUseDnsForFetchingServiceUrls为true时起作用 |
eurekaServerDNSName | String | 获取要查询的DNS名称以获取eureka服务器列表。如果契约通过实现getEurekaServerServiceUrls(String)返回服务URL,则不需要此信息。 |
shouldUseDnsForFetchingServiceUrls | boolean | 指示eureka客户端是否应使用DNS机制来获取要与之通话的eureka服务器列表。 当DNS名称更新为具有其他服务器时,该信息将在eureka客户端根据{getEurekaServiceUrlPollIntervalSeconds()中的指定轮询该信息后立即使用 |
shouldRegisterWithEureka | boolean | 指示此实例是否应将其信息注册到eureka服务器以供其他人发现。默认true |
shouldPreferSameZoneEureka | boolean | 优先使用相同区( zone )的 Eureka Server,默认true |
allowRedirects | boolean | 指示服务器是否可以将客户端请求重定向到备份服务器/群集。 如果设置为false,服务器将直接处理请求,如果设置为true,则可能会将HTTP重定向发送到客户端,并携带有新的服务器位置。默认false |
onDemandUpdateStatusChange | boolean | 如果设置为true,则通过ApplicationInfoManager进行本地状态更新将触发对远程eureka服务器的按需(但速率有限)注册/更新 |
logDeltaDiff | boolean | 是否根据注册表信息记录eureka server和eureka client之间的差异。eureka client只会从eureka server中检索增量,以便最大限度的减少网络流量.收到增量后,eureka client会协调来自服务器的信息,以便验证他是否遗漏信息。如果协调失败(比如网络异常的情况下),那么客户端会获取注册表的全量。默认false |
disableDelta | boolean | 是否禁用注册表增量获取,如果禁用则使用注册表全量获取 |
fetchRemoteRegionsRegistry | String | 以逗号分隔的eureka注册表信息将被提取的区域列表。 必须为可用区域返回的每个zone定义的可用区域。 如果不这样做,将导致发现客户端启动失败。 如果为null,表示不需要获取远程zone.默认为Null |
region | String | 获取此实例所在的区域(在AWS数据中心中使用)。默认:us-east-1 |
filterOnlyUpInstances | boolean | 过滤InstanceStatus UP状态的实例。默认true |
getEurekaConnectionIdleTimeoutSeconds | int | 跟eureka server连接的http连接在空闲多久后被关闭。默认30 |
fetchRegistry | boolean | 指示此客户端是否应从eureka服务器获取eureka注册表信息。默认true |
registryRefreshSingleVipAddress | String | 指示客户端是否只对单个VIP的注册表信息感兴趣,默认null |
heartbeatExecutorThreadPoolSize | int | 用于初始化heartbeatExecutor线程池的大小,默认2 |
heartbeatExecutorExponentialBackOffBound | int | Heartbeat executor指数退避相关属性.这是重试延迟的最大倍数值,以防出现一系列超时 |
cacheRefreshExecutorThreadPoolSize | int | 用于初始化cacheRefreshExecutor的线程池大小,默认2 |
cacheRefreshExecutorExponentialBackOffBound | int | 缓存刷新执行程序指数退避相关属性,默认10 |
dollarReplacement | String | 在eureka服务器中序列化/反序列化信息期间,获取美元符号$的替换字符串,默认:_- |
escapeCharReplacement | String | 在序列化/反序列化尤里卡服务器中的信息期间获取下划线符号_的替换字符串,默认:__(两个下划线) |
encoderName | String | encoder名称(这是一个暂时的配置,一旦最新的encoder稳定,可以删除) |
decoderName | String | decoder名称(这是一个暂时的配置,一旦最新的decoder稳定,可以删除) |