Caffeine 给 LoadBalancer 缓存实例列表

zjc 于 2026-08-07 发布

OpenFeign 的 lb://service-provider 最终要经过 Spring Cloud LoadBalancer。它每次都去拉服务实例列表,会让调用链路多出一层不确定性。引入 Caffeine 后,实例列表可以在本地缓存一小段时间。

一、为什么是 Caffeine

Caffeine 是 JVM 生态里成熟的高性能本地缓存,Spring Cloud LoadBalancer 对它有官方支持。相比自己写 Map 和过期逻辑,直接使用适配实现更稳。

二、收益

缓存服务实例列表可以带来三个变化:

三、缓存时间不能太长

实例列表缓存的 TTL 需要和发布频率平衡。太长会导致实例下线后仍被调用;太短则缓存收益不明显。滚动发布频繁的集群,更要确认客户端服务发现的心跳和缓存刷新节奏。

四、缓存不能替代健康检查

本地缓存只知道“上次看到的实例”,不知道实例当前是否健康。调用失败后的重试、负载均衡策略和下游健康状态,仍然要由完整链路共同保障。

五、经验总结

这是微服务里很典型的空间换时间:用一点本地内存,减少每次远程调用前的重复发现成本。小优化不炫技,但链路长了以后效果很实在。