系统设计 · 架构认知总纲

在约束条件下做架构决策,并持续演进系统能力的思维模型


一、系统设计的本质

1.1 什么是系统设计

系统设计的本质不是计算 QPS、TPS 或画架构图,而是在多重约束下做取舍。

系统设计关注的是:

系统设计 = 约束下的架构决策过程


1.2 系统设计关注的不是“功能”,而是“能力”

功能回答的是:

系统设计回答的是:

因此,系统设计的核心关注点是:

这些被统称为:系统的非功能性能力(Quality Attributes)


二、系统设计的四层不变模型

系统设计虽然面临的业务和技术不断变化,但其认知结构是高度稳定的。

2.1 四层模型概览

业务目标   ↓约束条件   ↓架构决策   ↓系统能力

2.2 业务目标(Why)

系统首先服务于业务目标,而不是技术理想。

常见目标包括:

没有业务目标的系统设计,只是在堆复杂度。


2.3 约束条件(Constraint)

约束决定了设计空间的边界。

常见约束包括:

约束不是负担,而是设计的前提条件。


2.4 架构决策(Decision)

架构设计的核心不是“选什么技术”,而是做出结构性决策,例如:

每一个决策,本质上都是在不同系统能力之间做权衡。


2.5 系统能力(Outcome)

架构决策最终沉淀为系统的能力边界:


三、系统设计核心能力总览

3.1 系统设计能力树

系统设计能力├── 性能│   ├── 延迟│   ├── 吞吐│   └── 并发├── 扩展性(Scalability)│   ├── 水平扩展│   └── 垂直扩展├── 伸缩性(Elasticity)│   ├── 无状态设计│   ├── 自动扩缩容│   └── 流量治理├── 可用性├── 安全性└── 可演进性

系统设计的成熟度,体现在能力是否“可预期、可控制、可演进”。


四、扩展性(Scalability)

4.1 扩展性的本质

如果系统性能的提升与资源投入呈近似线性关系,则系统具备扩展性。

扩展性回答的问题是:

当需求长期增长时,系统是否还能继续支撑?


4.2 扩展方式

扩展性高度依赖于:


五、伸缩性(Elasticity)

5.1 伸缩性的本质

伸缩性关注的是系统对短期变化的响应能力

它回答的问题是:

当负载突然变化时,系统能否快速调整资源规模?


5.2 性能问题 vs 伸缩性问题


5.3 伸缩性的架构前提

无状态是伸缩性的基础前提,而不是优化手段。


六、扩展性 vs 伸缩性

维度扩展性(Scalability)伸缩性(Elasticity)
时间尺度长期短期
关注点能否增长能否动态调整
架构前提模块化无状态 + 自动化
成本模型规划型按需型
失败风险增长受限流量突发崩溃

七、安全性(Security)

7.1 安全性的系统设计视角

安全性不是某个独立模块,而是一种横切系统的架构属性

系统设计中的安全性关注:

安全问题往往源于架构决策,而非实现细节。


八、系统设计的演进视角

8.1 不同阶段的设计重点

阶段核心关注
小规模简单性、开发效率
中规模扩展性、可用性
大规模伸缩性、治理能力

8.2 演进原则


九、结语

系统设计不是一次性工作,而是伴随系统生命周期持续发生的决策过程。

优秀的系统设计,不在于一开始就"设计得多复杂",而在于:

系统是否能够在不断变化的约束下,持续演进而不失控。

关联内容(自动生成)