如何降低 zuul-proxy 延迟?

Sîr*_*zar 2 spring netflix-eureka netflix-zuul

我有一个eureka-servereureka-client-1eureka-client-2zuul-proxy部署。

eureka-client-*被更改{status:"UP"}{status:"DOWN"}

我如何能降低延迟,这样zuul-proxy总是指向的一个eureka-client-*{status:"UP"}

yon*_*oon 7

有几个选项可以减少延迟。下面的值仅作为示例。

Eureka 服务器响应缓存

尤里卡服务器属性

eureka.server.response-cache-update-interval-ms: 5000 (default 30000)
Run Code Online (Sandbox Code Playgroud)

Eureka 服务器具有性能响应缓存,因此它不会返回它在上述毫秒内知道的实际值。您可以使用上述属性减少此延迟。

Zuul 丝带缓存

祖尔财产

ribbon.ServerListRefreshInterval: 5000  (default 30000)
Run Code Online (Sandbox Code Playgroud)

如您所知,zuul 使用 Ribbon 进行负载平衡,而 Ribbon 为服务器列表提供缓存。默认值为 30 秒。您可以使用上述属性调整此值以减少功能区缓存时间。

Eureka 客户端缓存

eureka 客户端属性(在您的情况下,它是 zuul 属性)

eureka.client.registryFetchIntervalSeconds : 30
Run Code Online (Sandbox Code Playgroud)

Zuul 是另一个 eureka 客户端,它使用 eureka 客户端检索特定服务的可用服务器列表。默认间隔为 30 秒,您可以使用上述属性调整此值。

租约到期时间

eureka 实例属性(在您的情况下,对于您的eureka-client-1, eureka-client-2

eureka.instance.lease-expiration-duration-in-seconds: 60 (default 90)
Run Code Online (Sandbox Code Playgroud)

如果 Eureka 服务器在以上几秒钟内没有收到心跳,则 Eureka 服务器从可用服务器列表中删除该实例。您的每个客户端每 30 秒发送一次心跳(该值也是可配置的,但不要更改此属性,因为 eureka 服务器有一些基于这 30 秒假设的代码)。所以 90 秒意味着如果 eureka 实例连续 3 次发送(或服务器接收失败)心跳失败,它将从列表中删除。您可以缩短此持续时间,但您可能会面临一些风险。您的尤里卡客户端必须存在此属性。

这里有一篇关于此信息的精彩文章:http : //blog.abhijitsarkar.org/technical/netflix-eureka/