LoadBalancer 缓存

Spring Cloud LoadBalancer 除了基本的 ServiceInstanceListSupplier 实现之外,还提供了两种缓存实现。ServiceInstanceListSupplier 实现每次需要选择实例时都通过 DiscoveryClient 检索实例信息。

Caffeine-backed LoadBalancer 缓存实现

如果您在类路径中有 com.github.ben-manes.caffeine 依赖,则将 Spring Cloud LoadBalancer 将使用基于 Caffeine 的实现。

如果您使用的是 Caffeine,还可以通过在 spring.cloud.loadbalancer.cache.caffeine.spec 属性中传递自己的 Caffeine 规范来覆盖 LoadBalancer 的默认 Caffeine Cache 设置。

注意:传递您自己的 Caffeine 规范将覆盖任何其他 LoadBalancerCache 设置,包括 “常用 LoadBalancer 缓存配置” 字段,例如 ttl 和容量。

默认 LoadBalancer 缓存实现

如果类路径中没有 Caffeine,则将使用 spring-cloud-starter-loadbalancer 自带的 DefaultLoadBalancerCache。

LoadBalancer 缓存配置

您可以通过将与 Spring Boot 兼容的 ttl 字符串值传递给 Duration 转换器语法来设置自己的 ttl 值(写入 ttl 时间后,在该时间之后的缓存应该过期),用来表示 Duration(持续时间)。设置的值将作为 spring.cloud.loadbalancer.cache.ttl 属性的值。您还可以通过设置 spring.cloud.cloud.loadbalancer.cache.capacity 属性的值来设置自己的 LoadBalancer 缓存初始容量。

默认设置包括将 ttl 设置为 35 秒,默认 initialCapacity 为 256。

您还可以通过将 spring.cloud.cloud.loadbalancer.cache.enabled 的值设置为 false 来完全禁用 loadBalancer 缓存。

注意:尽管不开启缓存对于开发和测试很有用,但其效率远低于将缓存开启,因此建议在生产环境始终启用缓存。

实例:禁用 Spring Cloud LoadBalancer 缓存,配置如下:

spring:
  cloud:
    loadbalancer:
      cache:
        # 不开启缓存
        enabled: false
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号