系统设计 步骤
-
澄清需求
确定系统边界范围,要提供哪些功能,不提供哪些 -
接口定义
系统提供的api
getXXX()
setXXX()
delXXX() -
粗略估计规模
系统规模,用来计算 伸缩、分区、负载均衡、缓存- 流量=每s读写数量 = 活跃用户 * 读写比例
- 带宽=每s流量 = 流量 * 请求对象大小
- 存储 = 系统使用年限 * 对象大小
- 缓存 = 存储 * 28原则
-
定义数据模型
存储表设计, 用那种数据库 sql or nosql?
User: UserID, Name, Email, DoB, CreationData, LastLogin, etc. -
高级设计
概要设计,画框图
表示端到端的读写流量、数据存储等 -
详细设计
深挖2-3个组件
提出多套方案,权衡 每套方案的优缺点- 大量数据存储:单库问题,如何分区
- 在哪一层引入缓存加快速度
- 哪些组件需要负载均衡
- 如何处理热点数据
-
识别、解决瓶颈
找出系统瓶颈、并解决、缓解- 单点故障
- 数据丢失、副本
- 性能监控
计算指标
File sizes
1b &#