系统设计与架构实战:原理、工程与电商案例
这是一本面向中高级工程师、技术负责人和架构师的系统设计实践书。全书以系统设计方法论为主线,结合中间件、可靠性工程、工程治理和电商业务案例,帮助读者把“会画架构图”推进到“能落地、能治理、能复盘”的工程能力。
本书强调三个判断:
- 系统设计首先是业务边界、数据事实和失败语义的设计,不只是组件堆叠。
- 架构方案必须能经受生产环境的流量、故障、变更、对账和资损风险考验。
- 电商系统是理解复杂业务系统的高密度样本,商品、库存、营销、计价、订单、支付和供应商同步能覆盖大量通用架构问题。
适合读者
- 已有后端开发经验,希望系统化提升架构设计能力的工程师。
- 正在负责业务系统拆分、重构、稳定性治理或技术方案评审的技术负责人。
- 准备系统设计面试,希望把项目经验组织成清晰表达的候选人。
- 希望通过电商场景理解交易链路、一致性、对账、补偿和资损防控的读者。
本书结构
- 系统设计方法论(第 1-9 章):问题定义、方案设计、业务边界、内部结构、系统集成、架构质量与编码落地,以及可靠性与工程治理(对账补偿、DLQ、故障恢复、资损防控、容量规划、限流、熔断和降级)。
- 基础设施与计算机基础(第 10-22 章):MySQL、Redis、Kafka、Elasticsearch、Kubernetes、全局 ID 与技术选型,以及操作系统、网络、Shell、Python、C++、Go。
- 电商系统设计实战(第 24-36 章):电商全景、商品、库存、营销、计价、搜索、购物车、订单、支付、供应商同步、供给治理和 B2B2C 综合案例。
- 系统设计面试(第 37-46 章):中间件、可靠性、电商架构题库、交易链路、容量估算和白板答辩。
全书逐章速览
第一部分:系统设计方法论
| 章节 | 主题 | 内容速览 | 阅读收获 |
|---|---|---|---|
| 第 1 章 | 系统设计与方案写作 | 从系统设计的核心问题、容量成本权衡和一致性取舍出发,把架构判断组织成可评审、可执行、可复盘的技术方案。 | 建立从问题定义到 TD 落地的设计表达能力。 |
| 第 2 章 | 编码、重构与 Code Review | 把架构意图落到代码边界、重构节奏和评审标准中,讨论如何避免 Controller、Service、DAO 与外部依赖混杂。 | 用代码结构和 Review 持续守住系统可演进性。 |
| 第 3 章 | 生产治理与技术债务 | 以治理、保障和技术债务的反馈环为主线,拆解 SLO、错误预算、韧性设计、应急保障和还债机制。 | 能把稳定性、债务和交付速度放进同一套治理框架评估。 |
| 第 4 章 | 大事务与最终一致性 | 从电商创单切入,比较同步 RPC、Saga、TCC、Outbox 和补偿机制,说明跨系统副作用如何收敛。 | 设计可恢复、可补偿、可审计的大事务链路。 |
| 第 5 章 | 长生命周期业务流程 | 区分大事务和长流程,围绕订单、商品、退款、入驻和审批等场景展开状态机、编排、恢复与治理。 | 掌握业务对象跨阶段推进的状态建模和恢复设计。 |
| 第 6 章 | 任务处理与 Agent 协作 | 从短任务、长任务、后台任务到 Agent 协作,梳理任务生命周期、调度、幂等、重试、可观测和人机协同边界。 | 为异步任务和长任务系统建立清晰的执行与治理模型。 |
| 第 7 章 | 高准确性与强一致性 | 聚焦支付、库存和账务等不能只靠最终一致性口号兜底的场景,强调权威事实、CP 核心段、幂等和对账。 | 能优先保护业务事实,并为强一致链路设计吞吐边界。 |
| 第 8 章 | 低延迟复杂读 | 面向搜索、推荐、广告和 Feed,分析读写不对称、复杂查询、结果质量和性能耦合下的读模型与缓存策略。 | 设计高性能读路径,并说明一致性、相关性和延迟取舍。 |
| 第 9 章 | 高并发写与热点 | 以秒杀、社交互动和流量洪峰为代表,讨论削峰、排队、热点隔离、快反馈和后端异步收敛。 | 能识别极端写入热点,并设计抗洪峰的写链路。 |
第二部分:基础设施与计算机基础
| 章节 | 主题 | 内容速览 | 阅读收获 |
|---|---|---|---|
| 第 10 章 | MySQL 存储与数据库 | 介绍 MySQL 在电商系统中的定位,覆盖 InnoDB、表设计、索引、事务、分库分表和线上治理。 | 从访问模式和一致性要求倒推数据库建模与索引设计。 |
| 第 11 章 | Redis 缓存实践 | 梳理 Redis 数据结构、持久化、复制、集群、缓存一致性、分布式锁和热点治理。 | 设计缓存、锁和热点保护时能避开常见误区。 |
| 第 12 章 | Kafka 消息队列与异步 | 讲解 Topic、分区、消费组、顺序性、可靠性、幂等、高吞吐、积压和回压处理。 | 能用消息队列拆解异步链路,并治理重复、乱序和积压。 |
| 第 13 章 | Elasticsearch 搜索与索引 | 覆盖倒排索引、分片副本、写入查询链路、Mapping、分词、相关性、深分页和集群治理。 | 建立搜索读模型、索引设计和性能优化的基础判断。 |
| 第 14 章 | Kubernetes 与 Docker | 从容器化价值与边界讲到 Docker 模型、Kubernetes 对象、调度发布、服务治理、网络配置和资源管理。 | 能理解容器平台如何支撑发布、伸缩、隔离和故障排查。 |
| 第 15 章 | 全局 ID 与基础服务 | 说明电商 ID 分类、全场景 ID 清单和 DB、Redis、雪花算法等发号方案的能力边界。 | 为订单、商品、库存等核心对象选择可扩展的 ID 体系。 |
| 第 16 章 | 技术栈选型 | 按选型顺序、组件职责边界、电商示例和评审清单,讨论技术方案为什么选、何时不选。 | 能把技术选型转化为可解释、可复盘的架构决策。 |
| 第 17 章 | 操作系统基础 | 复习进程线程、调度、虚拟内存、文件系统、I/O、并发同步和死锁等工程常用知识。 | 用操作系统视角解释性能、资源和并发问题。 |
| 第 18 章 | 计算机网络实践 | 覆盖网络分层、TCP、UDP、HTTP、HTTPS、DNS、CDN、代理和常见网络问题排查。 | 能把网络协议知识应用到链路设计、延迟分析和故障定位。 |
| 第 19 章 | Bash 与 Shell 实用 | 讲解 Shell 基础、命令组织、文本处理、管道、grep、sed、awk、日志排查和自动化脚本。 | 提升命令行排查、批处理和轻量自动化能力。 |
| 第 20 章 | Python 实践 | 介绍 Python 的工程用途、常用语法、标准库、自动化、数据处理、调试、性能和常见坑。 | 用 Python 快速完成工具脚本、数据处理和验证任务。 |
| 第 21 章 | C++ 实践 | 聚焦内存模型、对象生命周期、STL 容器算法、字符串处理、性能优化和常见陷阱。 | 理解 C++ 性能和内存风险,支撑底层问题分析。 |
| 第 22 章 | Go 语言实践 | 梳理 Go 的核心设计、goroutine、channel、接口、组合、错误处理、网络服务和并发实践。 | 用 Go 设计清晰的并发服务和工程化后端模块。 |
第三部分:电商系统设计实战
| 章节 | 主题 | 内容速览 | 阅读收获 |
|---|---|---|---|
| 第 24 章 | 电商系统全景 | 从业务架构、应用架构、数据架构和技术架构拆解电商核心域与支撑域,建立交易与支付主线。 | 用全景图识别电商系统边界、依赖和核心风险。 |
| 第 25 章 | 商品中心系统 | 说明商品中心的定位、边界、架构分层、读写分离、SPU/SKU、类目属性和对外发布契约。 | 设计稳定的商品主数据系统,并避免被展示和交易逻辑污染。 |
| 第 26 章 | 商品供给与生命周期治理 | 围绕供给入口、商品创建编辑、运营审核、生命周期治理和专项链路,分析商品不是简单 CRUD 的原因。 | 设计覆盖创建、编辑、审核、发布和治理的商品供给平台。 |
| 第 27 章 | 库存系统 | 讨论库存的通用模型、虚拟库存、可售锁定已售、并发扣减、超卖防控、释放和对账补偿。 | 区分热路径和权威路径,设计高并发且最终正确的库存系统。 |
| 第 28 章 | 营销系统 | 覆盖优惠券、积分、活动规则、预算控制、资格校验、试算、锁定、核销、释放和大促降级。 | 设计可叠加、可核销、可控资损的营销能力。 |
| 第 29 章 | 计价系统 | 分析商品价格、营销优惠、会员权益、税费和运费如何合成为可解释、可追溯、可复算的价格结果。 | 设计可防篡改、可复算、能跨页面保持一致的计价链路。 |
| 第 30 章 | 搜索与导购 | 区分搜索和导购,围绕统一查询服务、场景识别、查询编排、索引同步、筛选排序和降级展开。 | 构建商品发现读路径,并治理搜索体验与主数据一致性。 |
| 第 31 章 | 购物车与结算 | 说明购物车和结算域的边界,覆盖未登录加购、登录合并、结算校验、价格库存营销重算和重复提交防护。 | 把用户意图暂存和交易前强校验拆成清晰职责。 |
| 第 32 章 | 订单系统 | 从业务场景、状态机、订单数据模型、创单幂等、库存营销支付协作和异步补偿展开订单核心设计。 | 设计以状态和交易事实为中心的订单系统。 |
| 第 33 章 | 支付系统 | 讲解支付单、渠道网关、回调幂等、重复乱序处理、退款状态机、对账和资金安全。 | 设计可信资金状态,避免把渠道回调等同于本地交易完成。 |
| 第 34 章 | B2B2C 平台架构 | 以机票、酒店等品类业务模型为背景,串联供应商、平台、用户、交易、履约和结算的完整架构约束。 | 从多角色、多品类、多链路角度设计平台型电商架构。 |
| 第 35 章 | 供给、库存、审核与运营全生命周期 | 把商品创建、编辑、库存运营、生命周期治理和供应商协同放入一条端到端供给治理链路。 | 设计供给侧全生命周期系统,并处理状态、审核、同步和恢复。 |
| 第 36 章 | C 端交易全生命周期 | 从搜索导购、详情页、加购、结算、下单、支付、履约到售后,梳理 C 端用户完整交易动作。 | 按用户旅程设计交易主链路,并识别每阶段的系统风险。 |
第四部分:系统设计面试
| 章节 | 主题 | 内容速览 | 阅读收获 |
|---|---|---|---|
| 第 37 章 | 系统设计面试综合 | 总结系统设计面试考察点,覆盖需求澄清、容量估算、存储缓存消息搜索选型、高可用一致性和复盘方法。 | 用稳定答题框架组织系统设计面试表达。 |
| 第 38 章 | 中间件与可靠性追问 | 按 MySQL、Redis、Kafka、Elasticsearch 和可靠性高频问题整理追问方向与回答模板。 | 面对中间件和稳定性追问时能说清原理、边界和取舍。 |
| 第 39 章 | 电商架构基础题库 | 以服务拆分、数据一致性、大促稳定性、多机房多活等基础题,训练电商平台整体架构表达。 | 把电商全景、领域边界和可靠性策略组织成面试答案。 |
| 第 40 章 | 商品、库存、营销与计价题库 | 围绕 SPU/SKU、详情页缓存、库存扣减、营销核销、计价一致性等供给与转化问题展开。 | 回答供给侧专题题时能区分权威数据、读模型和交易约束。 |
| 第 41 章 | 搜索、购物车、订单与支付题库 | 聚焦搜索引擎、购物车合并、结算校验、订单状态机、支付回调和主链路补偿等问题。 | 串联发现、结算、创单、支付和恢复的交易链路答题能力。 |
| 第 42 章 | 综合实战案例题库 | 通过百万级 QPS 商品详情页、秒杀、履约监控、大促压测、跨境结算等案例整合多维设计。 | 在综合场景中同时展开容量、选型、性能、故障和治理方案。 |
| 第 43 章 | 题库导航与章节补充 | 提供题型标注、答案结构、难度说明、使用方式和面试官版题库导航。 | 快速定位题库重点,并按题型选择合适的作答结构。 |
| 第 44 章 | 商品、库存、营销与计价专题 | 用专题方式总结商品中心、库存、营销、计价的边界、追问和综合题回答顺序。 | 用一句话和一条链路讲清供给侧系统协作。 |
| 第 45 章 | 搜索、购物车、订单与支付专题 | 以用户从发现商品到完成交易的主链路为核心,讲清读路径性能、写路径正确性和失败恢复。 | 把交易主链路答成状态流、数据模型、事件和补偿的组合。 |
| 第 46 章 | 白板答辩与容量估算 | 给出白板答辩顺序、容量估算口径、常见估算维度、画图粒度、表达句式和收尾方式。 | 在有限时间内把规模、链路、取舍、风险和演进讲清楚。 |
阅读路线
- 架构主线:第 1-9 章,配合第 10-16 章中间件。适合希望建立完整系统设计框架的读者。
- 电商实战主线:第 24-36 章。适合正在做交易系统、供给系统、支付系统或平台型业务的读者。
- 可靠性主线:第 3、4、7 章,结合第 32-33 章订单和支付阅读。适合做稳定性、故障恢复和资损防控治理。
- 面试主线:第 37-46 章。适合把工程经验整理为系统设计表达。
- 基础补齐主线:第 17-22 章。适合查漏补缺,补齐系统设计背后的计算机基础和编码能力。
使用建议
读这本书时,不建议只记结论。更好的方式是每读完一个系统章,都回答四个问题:
- 这个系统的权威数据是什么?
- 它负责什么,又明确不负责什么?
- 它和上下游如何协作,失败后由谁补偿?
- 它的监控、对账、灰度、回滚和资损防控怎么设计?
如果能把这四个问题说清楚,就已经从“功能设计”进入了“系统设计”。
本地构建
需安装 mdBook。本书复用 tools/mermaid-preprocessor.py 处理 Mermaid 图表。
cd books/system-design-architecture-book
mdbook build
mdbook serve
也可以在仓库根目录生成到 Hexo 本地预览目录并启动服务:
npm run server:system-design-architecture-book
启动后访问:
http://localhost:3000/system-design-architecture-book/