这次我们来详细聊聊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稳定,可以删除)