1、注意

    改配置建议在开发和测试环境下使用,尽量不要在生产环境使用。

2、背景

    由于Eureka拥有自我保护机制,当其注册表里服务因为网络或其他原因出现故障而关停时,Eureka不会剔除服务注册,而是等待其修复。这是AP的一种实现。

3、解决方案

Eureka server配置文件:

eureka:
  server:
    enable-self-preservation: false #关闭自我保护
    eviction-interval-timer-in-ms: 4000 #清理间隔(单位毫秒,默认是60*1000)

 Eureka client配置文件:

eureka:
  instance:
    #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
    lease-expiration-duration-in-seconds: 30   
    #服务刷新时间配置,每隔这个时间会主动心跳一次
    lease-renewal-interval-in-seconds: 10

4、Eureka 心跳配置例子

      A、Server服务端

server:
  port: 8761
eureka:
  client:
    #是否在eureka服务器上注册自己的信息以提供其他服务发现,默认为true
    register-with-eureka: false
    #客户端是否获取eureka服务器注册表上的注册信息,默认为true
    fetch-registry: false
  server:
    #开启自我保护模式
    enable-self-preservation: false
    #清理无效节点,默认60*1000毫秒,即60秒
    eviction-interval-timer-in-ms: 5000

      B、Client客户端

spring:
  application:
   name: spring-A-client
eureka: 
  instance:
    #eureka客户端需要多长时间发送心跳给eureka服务器,表明他仍然活着,默认30秒
    lease-renewal-interval-in-seconds: 5
    #eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除
    lease-expiration-duration-in-seconds: 10
    metadata-map: 
      company-name: eureka
  client: 
    #表示eureka client间隔多久去拉取服务器注册信息,默认为30秒
    registry-fetch-interval-seconds: 30
    #表示eureka client间隔多久去拉取服务器注册信息,默认为30秒
    registry-fetch-interval-seconds: 30
    serviceUrl: 
      defauiltZone: http://localhost:8761/eureka/
logging:
  level: 
    com.netflix: DEBUG

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐