针对配置中心场景优化的分布式缓存解决方案,业务特征:
- 数据稳定可控,总量几百条,不超过MB级别
- 读多写少,读写比例通常 100:1 以上
- 全量缓存策略最适合,无需区分热点数据
- 项目已实现
RistrettoEngine(L1+L2 架构) main.go仍使用SimpleEngine(仅 L1 缓存)- 测试服务器已在使用
RistrettoEngine
- 删除
engine/simple.go文件 - 修改
main.go使用RistrettoEngine作为默认引擎 - 清理相关测试和引用
- 在项目介绍中明确配置中心定位
- 说明全量缓存方案的优势和适用场景
- 补充业务特征描述(数据稳定、读多写少)
- 实现启动时全量数据预热
- 无需热点数据识别,直接全量加载到 L1+L2
- 确保服务启动即可提供完整缓存服务
- 移除布隆过滤器(数据量小,无必要)
- 移除空值缓存机制(新增场景少)
- 保持 Redis 无 TTL 设计(配置数据持久化)
用户请求 -> L1 (Ristretto 内存缓存) -> L2 (Redis 持久化缓存) -> 数据源
- 写入:同时更新 L1 和 L2,通过 Redis Streams 广播失效消息
- 读取:优先 L1,未命中则查询 L2 并回填 L1
- 一致性:通过 Redis Streams 实现最终一致性
- 无 TTL:配置数据永不过期,依赖主动失效
- 全量预热:启动时加载全部配置到缓存
- 简化策略:无需复杂的缓存驱逐和热点识别
- 超高读性能:L1 内存缓存提供微秒级响应
- 零缓存穿透:全量预热确保所有配置都在缓存中
- 最终一致性:通过 Redis Streams 保证多实例同步
- 运维简单:全量缓存,无需复杂的缓存策略管理
- 高优先级:移除 SimpleEngine,统一使用 RistrettoEngine
- 中优先级:更新 README 文档,明确项目定位
- 低优先级:实现全量预热机制(可选,当前按需加载已够用)