[英]Understanding Eureka Client Cache
我需要一些帮助,以了解为何在Eureka中注册的服务尽管实际上并未运行,但仍希望彼此通信。 例如,我在尤里卡(Eureka)注册了服务A和服务B。 如果我关闭服务B,则服务A仍会尝试与服务B通信30秒到3分钟,即使它没有运行。 这样做的目的是什么? 周围有什么办法吗? 谢谢!
如您所知,Netflix正在运行大量基于Eureka的服务器实例。 因此,通过Eureka查找实例的开销对于Netflix而言可能是巨大的开销。 我想这就是Eureka具有缓存,轮询间隔以及其他导致刷新实例状态延迟的功能的原因。
幸运的是,您可以使用以下属性来调整此延迟。
Eureka服务器 eureka.server.responseCacheUpdateInvervalMs
Eureka客户端(API调用程序) eureka.client.registryFetchIntervalSeconds
Eureka客户端(API提供商) eureka.instance.leaseExpirationDurationInSeconds
如果您正在运行的实例数量不是很多,通常可以减少上述属性。
还有另一个与此延迟有关的属性。
eureka.instance.leaseRenewalIntervalInSeconds
此属性设置Eureka客户端的心跳间隔。 它的默认值为30秒,但是您不能调整此值,因为Eureka服务器具有一些假定此时间段为30秒的硬编码逻辑。
我相信您是指Eureka的自我保存模式。
这样做的目的是什么?
自我保护模式旨在处理短期网络故障。 实例注册后,Eureka服务器将不会将实例永久保留在注册表中。 当实例首次注册时,它将为该实例设置租约续订策略。 该策略包括实例在从注册表中逐出之前可能会丢失多少个心跳。
当您运行多个Eureka服务器时,自我保存模式非常重要。
您可以浏览此 SO问题以获取有关自我保存模式的更多详细信息。
周围有什么办法吗?
默认情况下启用。 可以禁用它。
您还可以调整一些属性,以确保尽快清除死实例。
请仔细阅读上面链接的SO问题,以获取有关调整哪些属性的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.