Eureka相关服务注册类配置解释:
以下配置均以“eureka.client.”为前缀。代码实体类对应org.springframework.cloud.netflix.eureka.EurekaClientConfigBean
配置项 | 说明 | 默认值 |
enabled | 是否开启Eureka客户端 | true |
registryFetchIntervalSeconds | 从Eureka服务端获取注册信息的间隔时间,单位为秒 | 30 |
instanceInfoReplicationIntervalSenconds | 更新实例信息的变化到Eureka服务端的时间间隔,单位秒 | 30 |
InitialInstanceInfoReplicationIntervalSconds | 初始化实例信息到Eureka服务端的时间间隔,单位秒 | 40 |
eureka.client.eurekaServiceUrlPollIntervalSeconds | 轮询Eureka服务端地址更改的时间间隔,单位秒。当动态刷新配置文件时,需要关注该配置。 | 300 |
eurekaServerReadTimeoutSeconds | 读取Eureka server信息的超时时间,单位秒 | 8 |
eurekaConnectTimeoutSeconds | 连接Eureka server信息的超时时间,单位秒 | 5 |
eurekaTotalConnections | 从Eureka客户端到Eureka服务端的连接总数。 | 200 |
eurekaServerConnectionPerHost | 从Eureka客户端每个到Eureka服务端主机的连接总数 | 50 |
eurekaConnectionIdleTimeoutSecondes | 从Eureka客户端连接的空闲关闭时间,秒 | 30 |
heartbeatExcutorThreadPoolSize | 心跳连接池的初始化线程数 | 2 |
heartbeatExcutorExponentialBackOffBound | 心跳超时重试延迟时间的最大乘数值 | 10 |
cacheRefreshExcutorThreadPoolSize | 缓存刷新线程池的初始化线程数 | 2 |
cacheRefreshExcutorExponentialBackOffBound | 缓存刷新重试延迟时间的最大乘数值 | 10 |
usseDnsForFetchingServiceUrl | 使用DNS来获取Eureka服务端的serviceUrl | false |
reigisterWithEureka | 是否要自身的实例信息注册到Eureka服务端 | true |
preferSameZoneEureka | 是否偏好使用相同的Zone的Eureka服务端 | true |
filterOnlyUpInstances | 获取实例是否过滤,仅保留UP状态的实例 | true |
fetchRegister | 是或否从Eureka服务端获取实例注册信息 | true |
Eureka的服务实例类配置:主要是元数据配置,实例名配置,端点配置健康监测配置等,具体实体类为org.springframework.cloud.netflix.eureka. EurekaInstanceConfigBean。
元数据:
元数据是Eureka客户端在想服务注册中心发送注册请求时,用来描述自身服务信息的对象。包含了一些标准的元数据。如服务名称、实例名称、实例ip、实例端口等,以及其他自定义信息和用于负载均衡策略的信息。这些数据都会通过org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean加载,最终转为com.netflix.appinfo.InstanceInfo发送到服务端。ap<String, String> metadata = new ConcurrentHashMap<String, String>()是用来存储自定义的数据。标准数据元可以通过eureka.instance.<properties>=<value>的格式来配置。<properties>是EurekaInstanceConfigBean的成员变量名称。自定义的数据元可以通过eureka.instance.metadataMap.<key>=<value>的格式来配置
实例名称配置:
实例名称是区分统一服务的不同实例的唯一标识。Spring cloud Eureka的默认生成方式是。${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.intance_id}:${server.port}。配置项是eureka.instance.instanceId。当我们在同一台服务器启动多个相同服务时,只需要将port写成随机random.int(10000,18999)。再讲实例名置称一个随机值即可,例如eureka.instance.instanceId=${spring.application.name}:${random.int}。这样就能保证实例不冲突。
端点配置:
InstanceInfo可以看到有以下配置。
//应用主页的url private volatile String homePageUrl; //状态页的url private volatile String statusPageUrl; //健康检查的url private volatile String healthCheckUrl; |
Spring cloud Eureka默认使用了spring-boot-actuator提供的/info和/health。服务端开启健康检查(healthcheck)时,客户端的/heath必须是一个可访问的地址,否则服务端将无法更新对应客户端的健康状态。/info是服务端页面单击服务实例时,用来访问查询服务信息的。
很多情况我们服务是由上下文信息的。这是,我们就需要在spring-boot-actuator的监控端点前加入一个前缀。如:
management.context-path=/service //状态检查url eureka.instance. statusPageUrlPath=${management.context-path}/info //健康检查url eureka.instance. healthcheckUrlPath=${management.context-path}/health |
甚至,我们还可以修改/info和/health这些原生端点。这样的修改如下:
management.context-path=/service
endpoints.info.path=/serviceInfo endpoints.health.path=/serviceHealth
//状态检查url eureka.instance. statusPageUrlPath=${management.context-path}${endpoints.info.path} //健康检查url eureka.instance. healthcheckUrlPath=${management.context-path}${endpoints.health.path} |
以上的例子中都是以http请求来访问的,所以配置的都是相对路径。当我们需要以https来访问时,我们需要配置绝对路径。
//状态检查url eureka.instance. statusPageUrlPath=https://${eureka.instance.hostname}/info //健康检查url eureka.instance. healthcheckUrlPath= https://${eureka.instance.hostname}/health eureka.instance. homePageUrl= https://${eureka.instance.hostname}/ |
其他配置信息:
均以eureka.instance
配置项 | 说明 | 默认值 |
preferIpAddress | 是否优先使用IP地址作为主机名的标识 | False |
leaseRenewalIntervalInSeconds | Eurek客户端向服务端发送心跳的时间间隔,单位秒 | 30 |
leaseExpirationDurationInSeconds | Urek服务端在收到最后一次心跳之后的等待时间上限,单位秒。超过该时间后服务端会将实例从服务清单中清除。禁止服务端调用请求到该实例上 | 90 |
nonSecurePort | 非安全通信端口号 | 80 |
securePort | 安全通信端口号 | 443 |
nonSecurePortEnabled | 是否启用安全通信端口号 | true |
appname | 服务名称,默认为spring.applicaiont.name的是。没有则为unknown |
|
hostname | 主机名,不配置时就是用操作系统的主机名来获取 |
|