Spring Cloud LoadBalancer 教程

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
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号