勤劳的搬运工--SpringCloud--Eureka参数配置

原文出自https://www.cnblogs.com/xiemubg/p/7381055.html 点击打开链接

配置详解

在Eureka的服务治理体系中,主要分为服务端与客户端。服务端为服务注册中心,而客户端为各个提供接口的微服务应用。当部署高可用注册中心时,每个服务端也已经成为了客户端,因此,在使用Spring Cloud Eureka的过程中,我们所做的配置内容几乎都是对Eureka客户端配置进行的操作,所以了解这部分的配置内容,对于用好Eureka非常有帮助。 
而Eureka服务端更多类似于一个现成产品,大多数情况下,我们不需要修改它的配置信息。

Eureka客户端配置分类

  1. 服务注册相关配置,包括服务注册中心的地址、服务获取的时间间隔、可用区域等。
  2. 服务实例相关配置,包括服务实例的名称、IP地址、端口号、健康检查路径等。

服务注册类配置

关于服务注册类的配置信息,我们可以通过查看org.springframework.cloud.netflix.eureka.EurekaClientConfig的源码来获得比官方文档中更为详尽的内容。这些配置信息都已eureka.client为前缀。

指定注册中心

指定注册中心主要通过eureka.client.serviceUrl参数实现。 
如果我们构建了高可用注册中心集群时,我们可以为参数的value值配置多个注册中心的地址。例如:

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka,http://peer2:1112/eureka/

为了服务注册中心的安全考虑,很多时候我们都会为服务注册中心加入安全校验。这个时候,在配置serviceUrl时,需要在value值得URL中加入相应的安全校验信息,比如: 
http://<username>:<password>@localhost:1111/eureka

其他常用配置

这些常用配置均已eureka.client为前缀

参数名说明默认值
enabled启用Eureka客户端true
registryFetchIntervalSeconds从Eureka服务端获取注册信息的间隔时间,单位为秒30
instanceInfoReplicationIntervalSeconds更新实例信息的变化到Eureka服务端的间隔时间,单位为秒30
initialInstanceInfoReplicationIntervalSeconds初始化实例信息到Eureka服务端的间隔时间,单位为秒40
eurekaServiceUrlPollIntervalSeconds轮询Eureka服务端地址更改的间隔时间,单位为秒。当我们与Spring CLoud Config整合,动态刷新Eureka的serviceURL地址时需要关注该参数300
eurekaServerReadTimeoutSeconds读取Eureka Server信息的超时时间,单位为秒8
eurekaServerConnectTimeoutSeconds链接Eureka Server的超时时间,单位为秒5
eurekaServerTotalConnections从Eureka客户端到所有Eureka服务端的连接总数200
eurekaServerTotalConnectionsPerHost从Eureka客户端到每个Eureka服务端主机的连接总数50
eurekaConnectionIdleTimeoutSecondsEureka服务端连接的空闲关闭时间,单位为秒30
heartbeatExecutorThreadPoolSize心跳连接池的初始化线程数2
heartbeatExecutorExponentialBackOffBound心跳超时重试延迟时间的最大乘数值10
cacheRefreshExecutorThreadPoolSize缓存刷新线程池的初始化线程数2
cacheRefreshExecutorExponentialBackOffBound缓存刷新重试延迟时间的最大乘数值10
useDnsForFetchingServiceUrls使用DNS来获取Eureka服务端的serviceUrlfalse
registerWithEureka是否要将自身的实例信息注册到Eureka服务端true
preferSameZoneEureka是否偏好使用处于相同Zone的Eureka服务端true
filterOnlyUpInstances获取实例时是否过滤,仅保留UP状态的实例true
fetchRegistry是否从Eureka服务端获取注册信息true

服务实例类配置

关于服务实例类配置信息,我们可以通过查看org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean的源码来获取详细内容,这些配置信息都以eureka.instance为前缀。

元数据

元数据是Eureka客户端在想服务注册中心发送注册请求时,用来描述自身服务信息的对象,其中包含了一些标准化的元数据,比如服务名称、实例名称、实例IP、实例端口等用于服务治理的重要信息;以及一些用于负载均衡策略或是其他特殊用途的自定义元数据信息。 
我们可以通过eureka.instance.<properties>=<value>的格式对标准化元数据直接进行配置,其中properties就是EurekaInstanceConfigBean对象中的成员变量名。而对于自定义元数据,可以通过eureka.instance.metadataMap.<key>=<value>的格式来进行配置,比如:

eureka.instance.metadataMap.zone=shanghai

实例名配置

InstanceInfo中的instanceId参数,它是区分同一服务中不同实例的唯一标识。在Netflix Eureka的原生实现中,实例名采用主机名作为默认值,这样会使得在同一 
主机上无法启动多个相同的服务实例。所以,在Spring Cloud Eureka的配置中,针对统一主机中启动多实例的情况,对实例名的默认命名作了更为合理的扩展,它采用了如下默认规则:

${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}

对于实例名的命名规则,我们也可以通过eureka.instance.instanceId参数来进行配。如:

  eureka.instance.instanceId=${spring.application.name}:${random.int}

通过上面的配置,利用应用名加随机数的方式来区分不同的实例,从而实现在统一主机上,不指定端口就能轻松启动多个实例的效果。

端点配置
  • homePageUrl:应用主页的URL
  • statusPageUrl:状态页的URL
  • healthCheckUrl:健康检查的URL 
    其中,状态页和健康检查的URL在Spring Cloud Eureka中默认使用了spring-boot-actuator模块提供的/info端点和/health端点。并且这些端点起着很重要的作用

为了服务的正常运作,我们必须确保Eureka客户端的/health端点在发送元数据的时候,是一个能被注册中心访问到的地址,否则服务注册中心不会根据应用的健康检查来更改状态(仅当开启了healthcheck功能时,以该端点信息作为健康检查标准)。而/info端点如果不正确的话,会导致在Eureka面板中单机服务实例时,无法访问到服务实例提供的信息接口。 
大多数情况下,我们并不需要修改这几个URL配置。

健康检测

默认情况下,Spring CLoud Eureka中各个服务实例的健康检测并不是通过spring-boot-actuator模块的/health端点来实现的,而是依靠客户端心跳的方式来保持服务实例的存活。因此,默认的心跳方式作为健康检测并不保险。因为不能检测服务是否能有效提供服务。 
在Spring Cloud Eureka中,我们可以通过简单的配置,把Eureka客户端的健康检测交给spring-boot-actuator模块的/health端点,以实现更加全面的健康状态维护。 
详细步骤如下:

  1. 在pom.xml中引入spring-boot-starter-actuator模块的依赖 
    xml 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
  2. application.properties中增加参数配置eureka.client.healthcheck.enabled=true
其他配置

均以eureka.instance为前缀:

参数名说明默认值
preferIpAddress是否优先使用IP地址作为主机名的标识false
leaseRenewalIntervalInSecondsEureka客户端向服务端发送心跳的时间间隔,单位为秒30
leaseExpirationDurationInSecondsEureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒。超过该时间之后服务端会将该服务实例从服务清单中剔除,从而禁止服务调用请求被发送到该实例上90
nonSecurePort非安全的通信端口号80
securePort安全的通信端口号443
nonSecurePortEnabled是否启用非安全的通信端口号true
securePortEnabled是否启用安全的通信端口号 
appname服务名,默认取spring.application.name的配置值,如果没有则为unknown 
hostname主机名,不配置的时候讲根据操作系统的主机名来获取 

参考文献 
spring cloud 微服务实战


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值