从单机到云原生:分布式架构的九步演进
一段面向后端开发者的架构演进教学视频。它不讲具体框架,只讲一件事:当业务压力一层层加上来,架构该怎么一步步被逼出来,以及每一步到底解决了什么。
01一句话核心
整段视频其实只论证了一件事。
架构不是设计出来的,是被业务压力逼出来的。每一步演进都由一个具体的痛点触发 —— 先是扛不住并发,再是数据库被压垮,然后是安全风险、扩展成本、运维成本 —— 每解决一个,就立刻换来下一个问题。理解了这个链条,比记住任何一张架构图都重要。
02九步演进链
按视频顺序,每一步都标注了「触发它的问题」和「引入的技术」。
单机架构
起点:用户少,一台机器上应用 + 数据库就够了。
解决问题:从零搭建 —— 成本最低,先跑起来。
用户暴涨 → 水平拆机
用户量涨上来后,一台机器变成 5 台、10 台,但谁来分发流量成了新问题。
解决问题:应用集群 + 负载均衡 —— 可以自动屏蔽单台故障、自动分摊流量。
缓存登场
机器加多了,请求全压到数据库,数据库内存根本不够用。
解决问题:多级缓存 —— 本地缓存 + 分布式缓存 Redis,单次访问从 ms → μs 量级。
读写分离
写操作挡住了读操作,读写互相阻塞。
解决问题:Master / Slave 主从 —— 从库只负责读,主库只负责写。
分库分表
单库即使读写分离也撑不住海量数据存储。
解决问题:分库分表 + 数据库中间件 —— 路由、扩容、跨库查询都交给中间件,应用无感。
反向代理 + CDN
业务铺到广州 / 上海 / 北京多地后,太危险、容易被攻击。
解决问题:反向代理 + CDN —— 流量清洗、权限校验、静态资源就近分发。
微服务拆分
想给「订单」单独加机器扛流量,但在单体里做不到 —— 只能整机扩容,大材小用。
解决问题:单独部署 / 单独发布 / 单独扩容 —— 按业务边界拆成用户、商品、订单、支付、登录、会员等独立服务;配合服务注册与发现中心(RPC 自动选址)、消息队列(异步消费、削峰)。
容器化 → Kubernetes
服务拆到几百上千个后,配环境、装依赖、调参数成了灾难,稍微不一致就跑不起来。
解决问题:Docker 引擎(连运行环境一起打包,放哪都能跑)→ Kubernetes(容器编排、云平台)。
搜索引擎 + NoSQL
数据量大了以后,复杂查询和模糊查询越来越难做。
解决问题:ElasticSearch 倒排索引(专门存非结构化/半结构化数据)+ NoSQL(MongoDB) —— 把复杂查询从关系库里挪出来。
03架构 ↔ 问题的对照表
视频结尾给出的原表,建议收藏 —— 这是「遇到什么问题就上什么技术」的速查索引。
| 架构 | 解决的问题 |
|---|---|
| 单机架构 | 从零搭建 |
| 应用与数据分离 | 资源争抢 |
| 应用集群 + 负载均衡 | 高并发 |
| 多级缓存 | 查询性能、数据库压力 |
| 数据库读写分离 | 数据库读写阻塞 |
| 分库分表 + 分布式数据库 | 海量数据存储 |
| CDN + 反向代理 | 访问速度、系统安全 |
| 搜索引擎 + NoSQL | 复杂查询 |
04三句架构师的核心思维
视频的落点。三句话,等于整段内容的压缩包。
没有最好的架构,只有最适合业务的架构
架构没有普适的最优解,只有和当前业务规模、团队能力、预算匹配的那个解。过度设计比架构平庸更贵。
演进的本质:空间换时间,复杂度换性能
每引入一个中间件(缓存、分库分表、服务治理),都是用更多的机器和更复杂的心智负担,换取更高的吞吐。每一次交换都必须算得清才值得做。
永远围绕五大目标:高性能、高可用、可伸缩、可扩展、够安全
「够安全」这个词很妙 —— 不是绝对安全,而是成本收益下的合理水位。任何架构决策最终都要回到这五条上做检验。
05关键概念速查
视频里出现的名词,用一句话说清它到底解决什么。
06对到领锁 LMC 平台上
顺手做个映射 —— 这套演进链和 LMC 的三端设计能对上不少。
演进链在 LMC 上的对应关系
不是要现在就全上,而是标明「哪一层现在在哪一格」。
CDN + 反向代理 对应 LMC 的服务底座入口。考虑到 LMC 是一键私有化部署、客户部署在酒店内网,CDN 这层退化为客户侧网关,反向代理(鉴权 / 限流 / 多租户路由)这层是必须有的。L / C / M 三端。三端本质是按使用者角色切,比按业务域切更早发生 —— 这意味着 LMC 天然规避了「服务拆太细」这个坑:设备固件、梯控门禁这些业务域的拆分应该留在三端内部做,不要外泄成跨端调用。