Skip to content

Latest commit

 

History

History
62 lines (49 loc) · 2.26 KB

File metadata and controls

62 lines (49 loc) · 2.26 KB

L1+L2 全量缓存集成方案(配置中心优化版)

项目定位

针对配置中心场景优化的分布式缓存解决方案,业务特征:

  • 数据稳定可控,总量几百条,不超过MB级别
  • 读多写少,读写比例通常 100:1 以上
  • 全量缓存策略最适合,无需区分热点数据

当前状态分析

  • 项目已实现 RistrettoEngine(L1+L2 架构)
  • main.go 仍使用 SimpleEngine(仅 L1 缓存)
  • 测试服务器已在使用 RistrettoEngine

具体实现步骤

1. 移除 SimpleEngine 相关代码

  • 删除 engine/simple.go 文件
  • 修改 main.go 使用 RistrettoEngine 作为默认引擎
  • 清理相关测试和引用

2. 更新 README 文档

  • 在项目介绍中明确配置中心定位
  • 说明全量缓存方案的优势和适用场景
  • 补充业务特征描述(数据稳定、读多写少)

3. 优化预热机制

  • 实现启动时全量数据预热
  • 无需热点数据识别,直接全量加载到 L1+L2
  • 确保服务启动即可提供完整缓存服务

4. 简化设计决策

  • 移除布隆过滤器(数据量小,无必要)
  • 移除空值缓存机制(新增场景少)
  • 保持 Redis 无 TTL 设计(配置数据持久化)

技术细节

缓存架构

用户请求 -> L1 (Ristretto 内存缓存) -> L2 (Redis 持久化缓存) -> 数据源

数据同步机制

  • 写入:同时更新 L1 和 L2,通过 Redis Streams 广播失效消息
  • 读取:优先 L1,未命中则查询 L2 并回填 L1
  • 一致性:通过 Redis Streams 实现最终一致性

配置特化优化

  • 无 TTL:配置数据永不过期,依赖主动失效
  • 全量预热:启动时加载全部配置到缓存
  • 简化策略:无需复杂的缓存驱逐和热点识别

预期效果

  • 超高读性能:L1 内存缓存提供微秒级响应
  • 零缓存穿透:全量预热确保所有配置都在缓存中
  • 最终一致性:通过 Redis Streams 保证多实例同步
  • 运维简单:全量缓存,无需复杂的缓存策略管理

实施优先级

  1. 高优先级:移除 SimpleEngine,统一使用 RistrettoEngine
  2. 中优先级:更新 README 文档,明确项目定位
  3. 低优先级:实现全量预热机制(可选,当前按需加载已够用)