Appearance
系统设计基础:从需求与故障模型开始
修订于 2026-10-12。本文为入门框架,不把示例规模视为实测结果。
系统设计不是把缓存、消息队列和微服务全部画进一张图。先弄清用户要完成什么、允许多长时间、数据如何变化,以及故障时哪些结果仍必须保证。
五个起点
- 需求:关键用户路径、读写比例、响应目标和数据保留要求。
- 容量:当前与预期请求量、数据增长、峰值和预算,标注估算假设。
- 数据:主数据归属、事务边界、唯一性、备份与恢复。
- 故障:实例、依赖、网络分区、机房或人为配置出错时如何退化。
- 运维:部署、回滚、告警、权限和成本由谁负责。
从简单结构演进
先用单体服务与可靠数据库实现正确的业务规则。出现可测量的瓶颈后,再考虑缓存、异步队列、读副本或拆分服务。每引入一层,都要写清收益和新增的失效模式。缓存会带来一致性问题,队列会带来重复与延迟,拆分服务会带来跨服务事务。
以短链接服务为例,应明确短码冲突处理、重定向状态码、滥用防护、统计是否可异步,以及原始链接失效后的行为。只有这些问题明确后,容量与存储选型才有意义。
CAP 讨论网络分区时的特定取舍,不是为任何架构贴上“高可用”标签。具体系统还要说明一致性级别与恢复目标。