可扩展性是什么
垂直 vs 水平;building-for-scale 节点。
30 分钟
可扩展性是什么
流量上涨时,系统是加机器还是加 CPU?可扩展性(Scalability) 描述系统在负载增长时仍能保持性能与可用性的能力。对应 CodeRoadMap 全栈路线图 的 building-for-scale 节点:从单体走向可水平扩展的后端架构。
学习目标
- 区分垂直扩展与水平扩展的适用场景与成本曲线
- 用 QPS、延迟、可用性三个指标描述扩展需求
- 识别单体应用中常见的扩展瓶颈(数据库、Session、单点)
核心概念
| 方式 | 做法 | 优点 | 局限 |
|---|---|---|---|
| 垂直扩展(Scale Up) | 升级 CPU/内存/磁盘 | 改动小、无分布式复杂度 | 硬件天花板、停机窗口 |
| 水平扩展(Scale Out) | 增加同类实例 | 理论上无上限、故障隔离 | 需要无状态、数据分片与负载均衡 |
扩展不是免费午餐:水平扩展引入网络延迟、数据一致性与运维复杂度。工程上常见路径是:先垂直撑过早期流量,再在瓶颈明确后拆分无状态层与数据层。
请求 → [LB] → App × N → DB(往往最先成为瓶颈)
单机瓶颈排查顺序:CPU 饱和 → 内存/GC → 磁盘 I/O → 网络 → 下游依赖。后续课程将逐一拆解数据层与流量层的扩展手段。
与路线图
本 track 是 devops 方向的 构建可扩展系统 入口。读完本课,继续 scale-cap 理解分布式取舍;数据层细节见 postgresql-essentials 与 redis-essentials。
练习
- 画一张你熟悉系统的部署图,标出可能的单点
- 估算当前服务峰值 QPS 与 P99 延迟,写出第一个会触顶的组件
- 在路线图中找到 building-for-scale,列出其前后三个关联节点
小结
可扩展性 = 负载增长时仍可控的性能与可用性;垂直救急,水平才是长期路径。
加载本节练习…