Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 了解Eureka客户端缓存_Java_Spring Boot_Netflix Eureka - Fatal编程技术网

Java 了解Eureka客户端缓存

Java 了解Eureka客户端缓存,java,spring-boot,netflix-eureka,Java,Spring Boot,Netflix Eureka,我需要一些帮助来理解为什么在Eureka注册的服务尽管没有实际运行,但仍希望彼此通信。例如,我在Eureka注册了服务A和服务B。如果我关闭服务B,服务A仍将尝试与服务B通信30秒到3分钟,即使它没有运行。这样做的目的是什么?有什么办法吗?谢谢大家! 我相信你指的是尤里卡的自我保护模式 这样做的目的是什么 自我保护模式旨在处理短时网络故障。一旦实例被注册,Eureka服务器将不会永远将实例保留在注册表中。它在实例第一次注册时设置实例的租约续订策略。该策略包括实例在从注册表中退出之前可能错过的心跳

我需要一些帮助来理解为什么在Eureka注册的服务尽管没有实际运行,但仍希望彼此通信。例如,我在Eureka注册了服务A和服务B。如果我关闭服务B,服务A仍将尝试与服务B通信30秒到3分钟,即使它没有运行。这样做的目的是什么?有什么办法吗?谢谢大家!

我相信你指的是尤里卡的自我保护模式

这样做的目的是什么

自我保护模式旨在处理短时网络故障。一旦实例被注册,Eureka服务器将不会永远将实例保留在注册表中。它在实例第一次注册时设置实例的租约续订策略。该策略包括实例在从注册表中退出之前可能错过的心跳次数

自我保护模式在您需要时非常重要

关于自我保护模式的更多细节,你们可以通过这个问题

有什么办法吗

默认情况下,它处于启用状态。它可以被禁用

您还可以调整一些属性,以确保尽快逐出死实例


请浏览上面链接的问题,以获取有关调整哪些属性的帮助。

正如您所知,Netflix正在运行大量基于Eureka的服务器实例。因此,对于Netflix来说,通过Eureka查找实例的开销可能会很大。我想这就是为什么Eureka具有缓存、轮询间隔和其他特性,导致刷新实例状态的延迟

幸运的是,您可以使用以下属性调整此延迟

  • Eureka服务器-
    Eureka.Server.responseCacheUpdateInvervalMs

    • 30秒。Eureka服务器的API有自己的响应缓存。违约时间相当长。可以减小此值
  • Eureka客户端(API调用方)-
    Eureka.Client.registryFetchIntervalSeconds

    • 30秒。Eureka客户端定期从Eureka服务器获取实例状态。可以减小此值
  • Eureka客户端(API提供程序)
    Eureka.instance.leaseExpirationDurationInSeconds

    • 90秒。每个注册到Eureka服务器的实例都可以为自己设置过期时间。如果Eureka服务器在此期间未收到来自Eureka客户端的任何心跳信号,则该实例将过期。默认情况下,每个Eureka客户端每30秒发送一次心跳信号
如果正在运行的实例数量不是很大,通常可以减少以上属性

还有另一个属性与此延迟相关

  • eureka.instance.leaseRenewalIntervalInSeconds
此属性设置Eureka客户端的心跳间隔。它的默认值是30秒,但您不能调整此值,因为Eureka服务器有一些硬编码逻辑,假定此时间段为30秒