Ribbon 是不是缓存 Eureka 条目?

Posted

技术标签:

【中文标题】Ribbon 是不是缓存 Eureka 条目?【英文标题】:Does Ribbon cache Eureka entries?Ribbon 是否缓存 Eureka 条目? 【发布时间】:2018-02-13 08:09:06 【问题描述】:

Ribbon 是否缓存 Eureka 条目(为了避免对每个请求进行服务查找),如果是,它在 Spring Cloud 中是如何配置的?例如,像这样的 Feign 客户端如何为条目/刷新率/等配置生存时间:

@Bean
BookmarkClient bookmarkClient() 
  return loadBalance(BookmarkClient.class, "http://bookmark-service");

我见过这样的spring boot配置条目:

eureka.instance.leaseRenewalIntervalInSeconds=1
eureka.instance.leaseExpirationDurationInSeconds=2

所以在这种情况下,似乎缓存会每秒检查一次 Eureka 是否有更改,并允许每个条目缓存条目存活 2 秒 IIUC?此外,就 spring-boot / spring cloud 和 Netflix REST 客户端而言,就访问客户端而言(Feign/RestTemplate 和各种注释组合),配置有什么不同吗?

例如我见过RestTemplate是这样配置的:

   @Bean
   @LoadBalanced
   public RestTemplate restTemplate() 
    return new RestTemplate();
   

Feign 客户端是否会使用与上述示例相同的缓存配置设置?换句话说,所有 Spring Cloud 支持的微服务休息客户端的配置是否通用?

【问题讨论】:

确实如此,这些设置是针对 eureka 客户端的,而不是功能区客户端的。 【参考方案1】:

您可以对 Eureka 客户端进行以下更改,以在启动期间获取注册表并将其缓存到本地。在初始获取之后,Eureka 客户端将获取 delta:

eureka:
  client:
    fetchRegistry: true

【讨论】:

以上是关于Ribbon 是不是缓存 Eureka 条目?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Eureka、ribbon 进行负载平衡?

SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)

SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)

负载均衡Ribbon

负载均衡Ribbon

Spring Cloud Eureka 与 Ribbon 是怎么做服务发现的?