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 条目?的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)
SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用Ribbon 负载均衡自定义 Ribbon 配置禁用 Eureka 实现 Ribbon 调用)