繁体   English   中英

了解Eureka客户端缓存

[英]Understanding Eureka Client Cache

我需要一些帮助,以了解为何在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客户端每30秒发送一次心跳。

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

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

  • eureka.instance.leaseRenewalIntervalInSeconds

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

我相信您是指Eureka的自我保存模式。

这样做的目的是什么?

自我保护模式旨在处理短期网络故障。 实例注册后,Eureka服务器将不会将实例永久保留在注册表中。 当实例首次注册时,它将为该实例设置租约续订策略。 该策略包括实例在从注册表中逐出之前可能会丢失多少个心跳。

当您运行多个Eureka服务器时,自我保存模式非常重要。

您可以浏览 SO问题以获取有关自我保存模式的更多详细信息。

周围有什么办法吗?

默认情况下启用。 可以禁用它。

您还可以调整一些属性,以确保尽快清除死实例。

请仔细阅读上面链接的SO问题,以获取有关调整哪些属性的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM