深入解析:缓存设计之探了又探

news/2026/1/19 10:17:59/文章来源:https://www.cnblogs.com/gccbuaa/p/19500375

《从“读多写少”到“读多写多”:一次架构演进的深度复盘》

本文记录真实的业务演进过程:系统从“读多写少”的简单场景,逐渐演化为夜间任务的“读多写多”场景,导致原设计框架失效。

最终,我们通过 CQRS + 双轨模型 + 分段缓存 重新构建架构,使系统在性能、一致性、可扩展性上重新平衡。

目录

  1. 背景:业务为何突然“突变”?
  2. V1 架构:典型“读多写少”系统
  3. 业务变化:夜间裂变任务导致写多
  4. 问题分析:环依赖 + 缓存不合理 + 写压
  5. 架构重建:CQRS + 双轨模型
  6. 分段缓存:缓存不是一锅炖
  7. 最终架构(附全链路流程图)
  8. 总结:系统架构必须服务业务变化

1. 背景:业务为何突然“突变”?

最初我们的业务只有一个特点:

✔ 白天大量读取

✔ 写极少

(读多写少的典型场景)

例如基础档案、BOM 属性树、价格基础表等

然而业务方后期引入一个模型:

夜间裂变任务

某条基础数据变更后,会向上级、关联业务单据、关联子 BOM 全量传递引起 N 层价格链条变化。

在业务上,这就像原子链式反应 —— 裂变

结果:

这导致原本的架构从根上失效。

2. V1 架构:典型“读多写少”缓存架构

Hit
Miss
Hit
Miss
Client Request
JVM 缓存
Return
Redis
DB
回填 Redis + JVM

特点:

  • 本地缓存 + Redis 二级缓存
  • 更新事件少,缓存结构简单
  • DB 只承担少量写

这套体系在读多写少场景非常稳。当然在集群环境内我们需要MQ进行Topic广播进行触达集群变更。

3. 业务变化:夜间裂变任务导致瞬时写爆

❗ 一个小小的基础价格变化 → 会触发 N 层业务数据回写

例如:

  • 改了一个 BOM 的价格

    → 它是别的 BOM 的子集

    → 所有上级 BOM 也要重算

    → 它们再触达更上层 BOM

    → ……

这不是简单写,而是“传染式写”,数量可以从 1 变成 10,000。

夜间定时任务开始执行后:

  • DB 写压力骤增
  • Redis 写入大量 key
  • JVM 缓存瞬间失效密集
  • 更新链路反复触发

当然实际上的触达源有很多:账务、成本、工艺、工时、薪资调整等业务都会触发类似的回写

原有“读多写少”架构被彻底击穿。

4. 问题分析:本质是三大错误假设

(1) ❌ 有向有环的业务结构

业务数据修改基础数据 → 基础数据又影响业务数据

形成有向环 → 极易出现数据动荡、难以维护一致性。

最终我们做了正确选择:

必须打断环,引入中间层表单(中间结果)。

(2) ❌ 写被低估

早期架构完全按“写少”设计,没有考虑高并发写。

夜间任务一来,写量瞬间放大数百倍。

(3) ❌ 缓存策略不适配

白天缓存读写少 → ok

夜间缓存大量写入 → 缓存层来不及同步、更新量太大、全量刷新困难

5. 最终架构解决方案:CQRS + 双轨模型

这两个是架构升级的核心。

✔ CQRS:Command Query Responsibility Segregation

核心思想:读和写是两条完全不同的业务轨道。

写模型(Command Model)

读模型(Query Model)

  • 为“读性能”设计
  • 可高度缓存化
  • 可预计算、可反范式化

可以用一张图概括:

事件
Command 接口
写库
Query 接口
读库/缓存

✔ 双轨模型(Two-Track Model)

我的理解如下:

Track A(白天在线业务)

  • 稳定
  • 缓存主导
  • 响应实时用户

Track B(夜间离线计算)

架构图如下:

这样就实现了:

✔ 白天响应快(缓存驱动)

✔ 夜间计算准(DB直写)

✔ 两条轨道互不干扰


6. 分段缓存:缓存不是一锅炖,而是结构化缓存

为什么需要分段缓存?

因为“缓存整张表”是最愚蠢的做法:

  • 写入一个字段,需要刷新整份缓存
  • 修改一条数据,会 invalid 全表缓存
  • 放在 Redis 时会造成巨大 key
  • JVM 缓存容易被大对象撑爆

正确做法是:

✔ 缓存拆成“段”(Segment)

例如:

段名领域
S1BOM 基础信息(变化少)
S2BOM 价格段(变化中等)
S3裂变需要的中间结果(变化多)
S4业务计算依赖的临时缓存(变化快)

结构如下:

这就如图业务中台内的大量数据,进行清洗切割分段后,形成细碎的指标,进入数据中台。

为什么这样划分?

✔ 不同变化频率 → 不同缓存策略

✔ 不同冷热程度 → 不同 TTL

✔ 不同业务用途 → 不同数据结构

Segment 1:基础段(稳定)

特点:

  • 变化极少
  • 可永久缓存
  • 可 JVM + Redis 双缓存

数据结构:

{
"bom_id": 1001,
"name": "发动机模块",
"category": "机械",
"version": 3
}

Segment 2:价格段(中等变动)

适合:

  • Map 结构(可更新单字段)
  • Redis Hash
  • 分字段更新

例:

HSET price:1001 material_cost 12.3 labor_cost 8.1 overhead_cost 4.0

Segment 3:裂变段(变化频繁)

特点:

  • 写多
  • 夜间高并发
  • 用 Redis 的必要性一般
  • 更适合不缓存或使用短 TTL(比如 10 分钟)

数据结构:

{
"bom_id": 1001,
"fission_pending": true,
"dependents": [1005, 1006, 1010]
}

Segment 4:临时高速段(极高变化 / 瞬时热点)

适合:

  • W-TinyLFU 思路
  • 用来缓存 1 小时内的热点 key
  • 防止夜间裂变任务“扫库”带来的缓存污染

数据结构:

{
"bom_id": 1001,
"recent_access": 182
}

6.5一些拓展: 秒杀系统 vs 12306:同样高 QPS,为何架构完全不同?

在理解缓存之前,必须理解一个事实:

高并发不是架构的本质,本质是 “业务形态” 决定架构。

秒杀业务:

目标:顶住流量 → 提前准备 → 不求数据强一致,允许最终一致

典型特征:


12306 业务:

目标:绝对一致 → 一个位置不能卖给两个人

典型特征:

  • 强一致(不能超卖)
  • 查询高、写高、锁竞争高
  • 庞大的路径规划
  • 动态路由分流
  • 不可用缓存票信息
  • 请求分散但总量巨大

所以两种架构完全不同。

秒杀架构(缓存 + 削峰 + 异步)

设计思想:

12306 架构(强一致 + 路由 + 锁)

节点3
节点2
节点1
座位查询/加锁
节点3
订单系统
DB 集群
座位查询/加锁
节点2
订单系统
DB 集群
座位查询/加锁
节点1
订单系统
DB 集群
用户请求
LVS/负载均衡
全国路由调度层

设计思想:

  • “不可缓存”票务数据
  • 必须锁,必须串行,必须强一致
  • 通过 OSFP/LVS 等路由把请求打散
  • 分布式事务(TCC/2PC)补偿
  • 查询大,写也大,是典型强一致高并发系统

设计思想对比:为什么架构不同?

一句话总结:

秒杀在“扛流量”,12306 在“保一致性”。

一个靠缓存,一个靠调度与锁。

所以架构路径完全不同。

7. 最终架构图

夜间_离线轨
白天_在线轨
直接写 DB
裂变任务
计算完成
统一刷新分段缓存
读模型
用户请求
S1 基础段
S2 价格段
S4 临时热点段
业务响应

8. 总结:架构必须服务业务,而不是业务迁就架构

本次演进体现三个关键点:

① 架构必须跟随业务模式

读多写少 → 读多写多 → 架构必须变化。

② CQRS + 双轨模型是应对业务突变的最佳实践

白天高性能,夜间高一致性,两条路分开走。

③ 缓存不是越大越好,而是越“精细分段”越稳定

不同段不同策略,缓存才真正有价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1182470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淮安市清江浦淮阴淮安洪泽涟水盱眙金湖区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜推荐 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合淮安市清江浦区、淮阴区、淮安区、洪泽区、涟水县、盱眙县、金湖县7200份考生调研问卷、81家…

【Dify与Coze深度解析】AI应用开发平台对比指南

文章目录目录一、平台核心定位与背景Dify(Define Modify)Coze(扣子)二、核心功能深度对比三、技术架构特点Dify技术架构Coze技术架构四、适用场景与优势劣势分析Dify优势与适用场景Coze优势与适用场景五、选择建议:根…

如何快速配置DS4Windows:让PS手柄在PC上完美工作的完整教程

如何快速配置DS4Windows:让PS手柄在PC上完美工作的完整教程 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 如果你拥有PlayStation手柄却苦恼于PC游戏兼容性问题,D…

福州top10研究生留学机构盘点,性价比高服务全解析 - 留学机构评审官

福州top10研究生留学机构盘点,性价比高服务全解析一、如何为研究生留学选择福州本地的中介机构?在搜索引擎中,“福州研究生留学哪家机构靠谱”、“福州留学中介性价比如何”是准留学生及其家庭频繁提出的疑问。选择…

合肥top10研究生留学机构,录取案例多!了解其成功秘诀 - 留学机构评审官

合肥top10研究生留学机构,录取案例多!了解其成功秘诀一、合肥学子如何筛选可靠的研究生留学中介?在合肥,许多有志于攻读海外硕士学位的同学常常会询问:“本地有哪些录取案例丰富、值得信赖的留学机构?”作为一个…

【FastAPI 】技术深度解析与主流框架对比

文章目录目录一、FastAPI 核心定位与背景二、FastAPI 核心技术解析1. 强类型校验与数据建模(基于 Pydantic)2. 自动生成交互式 API 文档3. 原生异步支持(高性能核心)4. 丰富的开箱即用功能三、FastAPI 与主流 Python Web/API 框架…

Switch注入神器TegraRcmGUI:新手也能轻松掌握的完整操作指南

Switch注入神器TegraRcmGUI:新手也能轻松掌握的完整操作指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 还在为Switch破解而烦恼吗&#xff…

汽车多总线数据采集:挑战、架构与同步策略全解析

多总线数据采集被简化为硬件连接?极端工况下同步精度不足、车规级可靠性不达标、数据难直接赋能算法迭代?速看本文如何深度贴合行业需求,系统拆解多总线(CAN/LIN/100BASE-T1等)数据采集方案的核心痛点、架构设计、…

重磅首发!OpenAI 280页《智能体 Agent 实战宝典》超全完整版PDF,吃透即封神

2025年被定义为Agent智能体元年,LLM驱动的智能体技术强势登顶技术风口,凭借自主处理复杂多步骤任务的超强能力,成为AI领域的核心赛道,但从零搭建高效、稳定、可落地的智能体,始终是困住无数开发者的核心难题。 OpenAI最…

【收藏级 | 知识分享】艺术与科技深度融合:前沿方向与期刊偏好

艺术与科技深度融合:前沿方向与期刊偏好 2025年艺术与科技融合进入“场景化落地”阶段,不再局限于技术应用,更强调“技术重构艺术表达、艺术赋予技术温度”,以下为前沿方向及投稿适配要点: 1. 三大前沿融合方向(…

2026年专业的石家庄电路维修改造,石家庄电路维修,石家庄电工电路维修公司选购参考指南 - 品牌鉴赏师

引言在当今社会,电路系统作为基础设施的重要组成部分,其维修与改造的质量直接关系到人们的生活安全与工作效率。石家庄作为华北地区重要的城市,电路维修改造市场需求旺盛。为了给消费者提供一份专业、公正、客观的石…

2026年乙型网带品牌推荐:国内优质品牌大盘点,链板输送机/Z型提升机/皮带提升机/不锈钢网带,网带销售厂家怎么选购 - 品牌推荐师

引言 乙型网带作为工业生产中输送、清洗、烘干等环节的核心部件,其性能直接影响生产线效率与产品质量。尤其在食品加工、玻璃制造、冶金化工等领域,乙型网带需具备耐高温、耐腐蚀、高强度等特性,以保障安全生产、改…

1个项目带你摸透大语言模型(LLM)|SFT、RLHF、推理蒸馏全流程复现

众所周知,完整训练一个大模型需要巨额算力和资金,普通开发者往往只能依赖接口或现成框架,停留在“黑箱式使用”的层面。那有没有一种可能,让我们以可承受的低成本,从零跑通一套完整流程,真正理解 LLM 的核心…

如何选择新加坡硕士留学中介?top10机构评测,学员满意度高 - 留学机构评审官

如何选择新加坡硕士留学中介?top10机构评测,学员满意度高一、如何选择新加坡硕士留学中介?在搜索引擎中,“新加坡硕士留学中介哪家好”、“如何挑选靠谱的中介”是准留学生及其家长频繁查询的问题。选择留学中介,…

2026年试验箱靠谱供应商排名,告诉你如何选择! - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家气候环境可靠性试验设备领域的标杆企业,为企业选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:重庆银河试验仪器有限公司 推荐指数:★★★★★…

淮安市清江浦淮阴淮安洪泽涟水盱眙金湖区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合淮安市清江浦区、淮阴区、淮安区、洪泽区、涟水县、盱眙县、金湖县7200份考生调研问卷、81家…

手把手教你用 Go 构建 AI Agent

本文将带你从零开始,使用 Go 语言和字节跳动开源的 Eino 框架,构建一个能够调用工具的 AI Agent。我们会分别实现 Function Calling 和 ReAct 两种主流模式,并对比分析它们的区别一、什么是 AI Agent? 在聊 Agent 之前&#xff0c…

上海研究生留学中介Top10排名揭晓,稳定可靠之选不容错过 - 留学机构评审官

上海研究生留学中介Top10排名揭晓,稳定可靠之选不容错过一、上海学子如何甄别可靠的研究生留学中介?从业八年、专注上海地区研究生申请规划的李哲,在此分享我的观察。每年,数以万计的上海高校学子面临留学申请,选…

救命神器!研究生必用8个AI论文平台深度测评与推荐

救命神器!研究生必用8个AI论文平台深度测评与推荐 学术写作工具测评:为何需要一份靠谱的AI平台榜单? 在当前学术研究日益数字化的背景下,研究生群体面临着论文撰写、文献检索、格式规范等多重挑战。传统的写作方式已难以满足高效、…

【必藏】从零开始学大模型:程序员入门指南与实战路线图(2026最新版)

本文系统介绍大模型基础知识、Transformer架构及三种形式、训练三步骤(预训练、指令微调、对齐微调)和应用领域。详述必备的数学、机器学习等基础知识,以及大模型面临的挑战与发展趋势。提供从L1到L4的完整学习路线,包括提示工程、RAG应用开发、Agent架构…