加速 Netflix-Eureka 取消注册不适用于 Spring Boot

kat*_*ex7 0 spring spring-mvc spring-boot netflix-eureka

我有一个尤里卡服务器运行 application.yml 看起来像

server:
  port: 8761 

eureka:
  client:
    registerWithEureka: false
    fetch-registry: false
  server:
    wait-time-in-ms-when-sync-empty:  5 
    enable-self-preservation: false
Run Code Online (Sandbox Code Playgroud)

在客户端,我有

eureka:
  instance:
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 1
    lease-expiration-duration-in-seconds: 1

  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka
Run Code Online (Sandbox Code Playgroud)

我特意放了

lease-renewal-interval-in-seconds: 1
lease-expiration-duration-in-seconds: 1
Run Code Online (Sandbox Code Playgroud)

而不是租约到期持续时间(以秒为单位)的默认值 90。

然而,Eureka 注销客户端需要接近 30 秒的时间,这与默认情况下注册客户端所需的时间类似,而无需显式添加 wait-time-in-ms-when-sync-empty: 5 eureka服务器的application.yml

有没有办法加快注销过程?看来我的加速尝试没有奏效

小智 5

有一个属性:evictionIntervalTimerInMs,我们需要在服务器端进行配置。

server:
    enableSelfPreservation: false
    evictionIntervalTimerInMs: 1000
Run Code Online (Sandbox Code Playgroud)

这是为了运行计划作业,从 eureka 注册表中删除服务条目。默认情况下为 (60 * 1000) 毫秒。将其减少到相当大的毫秒,它将按预期工作。

一旦您的服务租用被取消,它将在尤里卡的注册表中等待,直到下一个驱逐作业运行。因此,根据逐出作业的最后运行时间,注册表中的服务条目可能驻留 10、30、40.. 秒。

这个属性是我在调试库后发现的。有了这个属性,我就能够得到预期的行为。希望这对你有用。