架构取舍

缓存一致性:先定义允许的不一致

讨论缓存一致性之前,先区分读旧数据、写后读和跨服务可见性这些不同问题。

缓存一致性不是二元命题。对大多数业务来说,重要的不是“绝对一致”,而是明确:哪一类数据可以旧多久,哪一类操作绝不能错。

商品详情允许数秒的价格展示延迟,库存扣减通常不能接受;报表看板可以异步刷新,支付状态必须有可追溯的最终结果。把这些边界说清楚,才有资格讨论 Cache Aside、延迟双删、消息驱动或版本号校验。

设计缓存时,我会先写下三条约束:

  • 不一致的可见范围与最长时间;
  • 缓存失效或穿透时的服务降级策略;
  • 写入失败时的补偿、告警与人工介入方式。

技术方案只是实现手段。先定义业务可承受的风险,缓存设计才会变得简单。