Skip to content

从 0 开始学架构:系统学习规划


一、最终要掌握的能力图谱

1. 架构设计思维能力

你要能回答:

  • 什么是架构?架构和框架、设计模式有什么区别?
  • 架构设计的本质是什么?(管理复杂度)
  • 为什么不能一上来就追求"最牛的架构"?
  • 架构设计的三大原则是什么?(合适、简单、演化)
  • 什么时候该做架构设计,什么时候不该过度设计?
  • 如何识别系统复杂度的来源?
  • 如何在多个方案之间做权衡取舍?

这部分决定了你架构设计的"上限"——你能不能像架构师一样思考问题。


2. 高性能架构设计能力

你要能做到:

  • 知道单机高性能的关键模型:PPC、TPC、Reactor、Proactor
  • 理解数据库层高性能:读写分离、分库分表
  • 掌握缓存架构设计的三大要点:缓存穿透、缓存雪崩、缓存热点
  • 理解负载均衡的分类、算法和架构
  • 知道消息队列在高性能场景中的作用和选型
  • 能针对具体业务场景,设计出合理的高性能方案

这部分是后端最常考、最实战的架构能力。


3. 高可用架构设计能力

你要掌握:

  • CAP 定理到底是什么,怎么正确理解和应用
  • FMEA(故障模式与影响分析)方法怎么用
  • 高可用存储架构:主备、主从、主主、集群、分区
  • 高可用计算架构:主备、主从、对称集群、非对称集群
  • 异地多活架构:同城双活、跨城异地、跨国异地的挑战与方案
  • 接口级故障应对:降级、熔断、限流、排队

这部分决定你能不能设计出"不怕故障"的系统。


4. 可扩展架构设计能力

你要掌握:

  • 可扩展的基本思想:拆分
  • 面向流程拆分:分层架构
  • 面向服务拆分:SOA 架构
  • 面向功能拆分:微服务架构
  • 微服务的粒度怎么把控
  • 微内核架构(插件化架构)的设计思想
  • 如何在拆分和合并之间做平衡

这部分决定你的系统能不能"长期演进"而不腐化。


5. 架构实战落地能力

你要能做到:

  • 独立完成一个系统的架构方案设计
  • 写出专业的架构设计文档
  • 用四步法驱动架构设计:识别复杂度 -> 设计备选方案 -> 评估对比 -> 细化落地
  • 能以消息队列、支付系统、社交系统等真实案例为参照进行架构演练
  • 具备技术选型判断力
  • 具备跨团队推动架构落地的能力

这部分决定你能不能从"纸上谈兵"变成"真正能落地"的架构师。


二、学习路线:从思维到实战

第一阶段:架构基础与设计思维

目标:建立正确的架构认知,掌握架构设计的核心方法论。

要学的内容:

  • 架构的定义与本质
  • 架构设计的历史背景
  • 架构与框架、设计模式的区别
  • 架构复杂度的来源:高性能、高可用、可扩展
  • 架构设计三原则:合适原则、简单原则、演化原则
  • 架构设计四步法:
    1. 识别复杂度
    2. 设计备选方案(3~5 个)
    3. 多维度评估对比
    4. 细化落地方案

重点认知:

架构不是越复杂越好,是越合适越好。很多架构失败不是技术不行,是问题没识别对。架构设计最难的不是"想出方案",而是"在多个可行方案中做出取舍"。没有完美的架构,只有合适的架构。架构是演化出来的,不是一开始就设计出来的。

实战建议: 自己分析一个熟悉的系统,识别核心复杂度,列出至少 3 个备选方案并做评估。


第二阶段:高性能架构模式

目标:掌握后端系统最核心的性能优化架构手段。

必学内容:

单机高性能:

  • PPC(Process Per Connection)模型
  • TPC(Thread Per Connection)模型
  • Reactor 模型(单 Reactor 单线程、单 Reactor 多线程、多 Reactor 多线程)
  • Proactor 模型

集群高性能 -- 负载均衡:

  • DNS / 硬件(F5)/ 软件(Nginx、LVS)负载均衡
  • 负载均衡算法:轮询、加权轮询、最少连接、一致性哈希、源地址哈希

数据库层高性能:

  • 读写分离:什么时候用、怎么做、有什么坑
  • 分库分表:垂直拆分、水平拆分、分片键选择、全局 ID、数据迁移
  • 分库分表后的分页、排序、聚合问题

缓存架构:

  • 缓存穿透、缓存雪崩、缓存热点
  • 缓存与数据库一致性
  • 多级缓存架构

消息队列:

  • 消息队列在高性能中的作用
  • RabbitMQ / RocketMQ / Kafka 对比
  • 消息丢失、重复消费、消息积压问题

实战建议: 用"电商秒杀系统"做分析,设计完整的高性能方案。


第三阶段:高可用架构模式

目标:理解系统容错设计,掌握"不怕故障"的架构能力。

必学内容:

理论基础:

  • CAP 定理:C/A/P 的取舍与常见误解
  • FMEA 分析方法

高可用存储架构:

  • 主备复制、主从复制、主主复制(双主)
  • 数据集群、数据分区

高可用计算架构:

  • 主备计算、主从计算
  • 对称集群、非对称集群

异地多活:

  • 同城双活、跨城异地多活、跨国异地多活
  • 异地多活设计的 4 大技巧和 4 个步骤

接口级故障应对:

  • 降级、熔断、限流、排队

实战建议: 对一个系统做 FMEA 分析,设计高可用方案。


第四阶段:可扩展架构模式

目标:掌握系统拆分与演进的核心思想。

必学内容:

拆分方式架构模式核心思想
面向流程分层架构经典三层/四层架构,层间解耦
面向服务SOA 架构ESB + 服务编排
面向功能微服务架构独立部署、独立数据库
插件化微内核架构规则引擎 + 插件机制

重点问题:

  • 什么时候该拆微服务,什么时候不该拆?
  • "三个火枪手"原则:一个微服务最好由 3 个人负责
  • SOA 和微服务的本质区别?
  • 如何避免"为了微服务而微服务"?

第五阶段:架构实战与案例分析

目标:将方法论落地到真实业务场景。

必学内容:

  • 架构设计文档怎么写
  • 消息队列架构设计实战
  • 微博系统架构演进分析
  • 支付系统架构设计
  • 互联网架构演化路线

实战建议: 完整走一遍架构设计四步法,输出一份架构设计文档。


三、大厂常见架构坑点

1. 不分析复杂度就开始设计

一上来就套方案,不知道系统的核心矛盾是什么。

先识别复杂度来源,再决定架构方向。

2. 盲目追求大厂方案

看到阿里用了中台就搞中台,看到 Netflix 用了微服务就全拆。

合适原则 + 简单原则:能用简单方案解决的,不要搞复杂。

3. 微服务拆得太细

3 人团队拆了 20 个微服务,分布式事务满天飞,运维复杂度远超业务复杂度。

"三个火枪手"原则,拆分要有明确的业务边界。

4. 过度设计异地多活

业务体量根本不需要,团队没有能力落地。

异地多活是"最后的武器",不是标配。先把同城高可用做好。

5. 忽视故障设计

只考虑正常流程,不做 FMEA,没有降级/熔断/限流。

每一个外部依赖都要有"挂了怎么办"的方案。

6. 缓存架构没想清楚

穿透/雪崩/热点/一致性四大问题没考虑。

缓存不是"加了就好",要系统性设计。

7. 分库分表做得太早

数据量百万级就开始拆,分片键选错,跨库查询复杂度爆炸。

单库单表能抗住就不要拆,先优化 SQL、索引、缓存。

8. 消息队列滥用

什么都放消息队列,丢失/重复/积压没有兜底。

引入消息队列的同时必须考虑:丢失、重复、积压、顺序。

9. 架构文档缺失

架构方案只在口头讨论,技术决策无法追溯。

每一个重要的架构决策都要有文档记录。


四、面试高频问题清单

架构思维类

  • 架构设计的本质是什么?
  • 架构设计三大原则是什么?
  • 架构设计四步法是什么?
  • 什么是架构复杂度?复杂度来源有哪些?

高性能类

  • Reactor 模型是什么?有几种变体?
  • 什么时候用读写分离,什么时候用分库分表?
  • 分库分表的分片键怎么选?
  • 缓存穿透、缓存雪崩、缓存击穿的区别和解决方案?
  • 消息队列怎么保证消息不丢失?
  • 负载均衡算法有哪些?各自适用场景?
  • 如何设计一个高性能的秒杀系统?

高可用类

  • CAP 定理是什么?为什么不能三者兼得?
  • CP 和 AP 分别适用什么场景?
  • FMEA 分析方法是什么?
  • 异地多活怎么做?最大挑战是什么?
  • 降级、熔断、限流分别是什么?

可扩展类

  • 微服务和 SOA 的区别是什么?
  • 微服务拆分的原则是什么?
  • 微服务粒度怎么把控?

实战落地类

  • 你做过的系统架构是怎样的?
  • 你们为什么选择这个方案?考虑过哪些备选方案?
  • 如果让你重新设计,你会怎么改?
  • 你怎么写架构设计文档?

五、10~14 周学习计划

周数阶段重点内容
1-2架构基础架构定义、复杂度、三原则、四步法
3-4高性能-单机与集群Reactor/Proactor、负载均衡
5-6高性能-数据库与缓存读写分离、分库分表、缓存架构、消息队列
7-8高可用架构CAP、FMEA、存储/计算高可用、接口级故障
9-10异地多活与可扩展异地多活、分层/SOA/微服务/微内核
11-12架构实战案例分析、架构文档、四步法实战
13-14面试复盘按专题刷题、画架构图、模拟面试

六、优先级建议

必须精通

  • 架构设计四步法 + 三原则
  • CAP 定理的理解与应用
  • FMEA 分析方法
  • Reactor 模型
  • 读写分离与分库分表
  • 缓存架构三大问题
  • 消息队列核心问题
  • 负载均衡
  • 微服务拆分原则与粒度把控
  • 异地多活核心思路
  • 降级、熔断、限流

可以先掌握到"会讲"

  • Proactor 模型细节
  • 微内核架构深入设计
  • SOA 与 ESB 细节
  • 特定中间件源码级原理
  • 跨国异地多活的网络层细节

七、课程模块优先级

模块核心内容优先级
架构基础架构定义、复杂度、三原则、四步法★★★★★
高性能-单机PPC/TPC/Reactor/Proactor★★★★
高性能-集群负载均衡★★★★
高性能-数据库读写分离、分库分表★★★★★
高性能-缓存穿透、雪崩、热点★★★★★
高性能-消息队列选型、场景、问题★★★★
高可用-理论CAP、FMEA★★★★★
高可用-存储主备/主从/集群/分区★★★★
高可用-计算主备/主从/集群★★★★
高可用-异地多活设计技巧与步骤★★★★
高可用-接口级降级/熔断/限流★★★★★
可扩展-分层分层架构★★★
可扩展-SOASOA 思想★★★
可扩展-微服务拆分原则与粒度★★★★★
可扩展-微内核插件化设计★★★
架构实战案例分析与文档★★★★★

八、推荐学习方式

架构最怕"看懂了,以为会了"。

  1. 每个知识点都做分析练习 -- 学高可用就分析你们公司系统的单点故障在哪里
  2. 每学完一个模块就输出一篇总结 -- 输出极大提升掌握度
  3. 建自己的架构案例库 -- 每个案例记录背景、复杂度、方案、决策、教训
  4. 用电商/即时通讯系统贯穿 -- 覆盖所有架构问题

实战项目: 本路线核心知识点已在 Ecommerce Microservices 项目中落地 -- 三层架构 (Controller/Service/Repository)、策略模式、统一响应格式、Pydantic Settings 配置管理、Docker Compose 全栈部署。

基于 VitePress 构建