命令记不住

登陆

缓存应用架构设计

缓存应用架构设计

1.应用架构的3个关注点

I/O的非阻塞
分布式事务
缓存的效率

2.缓存假定

高性能
低可靠

3.缓存功能

加速
保护

4.应用基本流程

5.为缓存补充可靠性

6.应用场景

数据库表/领域模型

业务层中间计算结果

服务调用

  • 可靠服务
  • 不可靠服务

7.不命中时如何补偿

从原始数据源补偿,满足性能要求时

  • 数据库
  • 可靠服务

从Shadow DB补偿,不满足性能要求时

  • 算法复杂
  • 外部服务

8.缓存的更新

实时同步

  • 双写
  • 消息通知计算(中间结果)

定时同步(追求命中率)

  • 外部服务,数据变化无法通知

不同步(不追求命中率)

  • 数据源变化不更新缓存

9.缓存的生命周期

实时同步

  • 长

定时同步(追求命中率)

  • 较长(视需求)

不同步(不追求命中率)

  • 短(视需求)

10.服务层缓存的检测点

客户端检测
服务端检测

11.基于代码共享的缓存兼容性

共享代码的优点
缓存key包含版本号

数据来源 Shadow DB 同步类型 生命周期
数据库表 原始数据 无 实时 长
业务层中间结果 中间结果 有 实时/消息 长
可靠服务 原始数据 无 不同步/定时同步 短
不可靠服务 原始数据 有 不同步/定时同步 短

12.缓存的选择

1.进程内缓存(go-cache)

优点:高性能

缺点:冷启动

2.自建缓存服务

优点:配合算法,可以使用细粒度存储

缺点:冷启动

3.自建缓存服务的折衷 redis + lua

优点:算法靠近数据,提高效率

缺点:需要预估算力平衡,防止阻塞

4.通用缓存服务 redis
推荐阅读