gpt4 book ai didi

java - 了解 Eureka 客户端缓存

转载 作者:行者123 更新时间:2023-11-29 06:50:26 26 4
gpt4 key购买 nike

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

最佳答案

如您所知,Netflix 正在运行大量基于 Eureka 的服务器实例。因此,通过 Eureka 查找实例的开销对于 Netflix 来说可能是很大的开销。我想这就是为什么 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 服务器会过期实例。默认情况下,每个 Eureka 客户端每 30 秒发送一次心跳。

如果您正在运行的实例数量不是很大,您通常可以减少上述属性。

还有一个属性与这个延迟有关。

  • eureka.instance.leaseRenewalIntervalInSeconds

该属性设置Eureka客户端的心跳间隔。它的默认值为 30 秒,但您无法调整此值,因为 Eureka 服务器有一些硬编码逻辑假定此时间段为 30 秒。

关于java - 了解 Eureka 客户端缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50263632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com