Spring Cloud Eureka 常用配置项目

Eureka 做为 Spring Cloud 主要的服务注册与发现模块,其配置项对整个服务的治理起到非常关键的作用。

eureka.client.registry-fetch-interval-seconds

registryFetchIntervalSeconds 表示 eureka client 间隔多久去拉取服务注册信息,对于 api-gateway,如果要迅速获取服务注册状态,可以缩小该值。

  • 默认 30 秒

eureka.instance.lease-expiration-duration-in-seconds

leaseExpirationDurationInSeconds 表示 eureka server 至上一次收到 client 的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance。

  • 默认 90 秒
  • 如果该值太大,可能出现将流量转发过去时该实例已经不存在了
  • 如果该值太小,则实例可能因为网络临时的抖动而被踢除
  • 该值至少应该大于 leaseRenewalIntervalInSeconds

eureka.instance.lease-renewal-interval-in-seconds

  • 默认 30 秒

leaseRenewalIntervalInSeconds 表示 eureka client 发送心跳给server端的频率。如果在 leaseExpirationDurationInSeconds 后,server 端没有收到 client 的心跳,则将踢除该实例。

除此之外,如果该实例实现了 HealthCheckCallback,并决定让自己 unavailable 的话,则该实例也不会接收到流量。

eureka.server.enable-self-preservation

enableSelfPreservation 是否开启自我保护模式,默认情况下,如果 Eureka Server 在一定时间内没有接收到某个微服务实例的心跳,Eureka Server 将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与 Eureka Server 之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。

Eureka 通过“自我保护模式”来解决这个问题:当 Eureka Server 节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server 就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该 Eureka Server 节点会自动退出自我保护模式。

综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让 Eureka 集群更加的健壮、稳定。

  • 默认 true

eureka.server.eviction-interval-timer-in-ms

evictionIntervalTimerInMs 表示 Eureka server 清理无效节点的时间间隔

  • 默认 60000(毫秒),即 60 秒

测试环境参考配置

Eureka Service

eureka:  
  server:
    enable-self-preservation: false           # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 5000       # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)

Eureka Client

eureka:  
  instance:
    lease-renewal-interval-in-seconds: 5      # 心跳时间,即服务续约间隔时间(缺省为30s)
    lease-expiration-duration-in-seconds: 10  # 发呆时间,即服务续约到期时间(缺省为90s)
  client:
    healthcheck:
      enabled: true                           # 开启健康检查(依赖spring-boot-starter-actuator)

Zuul

eureka:  
  client:
    registry-fetch-interval-seconds: 5 # 默认为30秒

ohfree9

继续阅读此作者的更多文章