系统设计 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天,主要记录相关的知识点。
本堂课重点内容
- 系统设计方法论
系统设计
系统设计:为了达成某种目的,通过个体组成整体的过程。
系统设计的流程:
- 场景分析:什么系统,需要什么功能,多大的并发量
- 存储设计:数组如何组织,sql存储,nosql存储
- 服务设计:业务功能实现与逻辑整合
- 可扩展性:解决设计缺陷,提高鲁棒性,扩展性
如何做系统设计?
4S分析法:该方法将系统设计分为四个部分
Scenario场景:需要设计哪些功能,设计的质量性能等等需要有什么要求Service服务:大系统拆分成小系统Storage存储:数据如何存储,如何访问Scale升级:优化维护,解决缺陷,处理可能遇到的问题
常用术语:
Concurrent User并发用户- 日活跃*用户平均请求次数/一天多少秒=每秒请求数
- 请求峰值
- 增长量/变化的需求
Read QPS(Queries Per Second)读频率Write QPS(Queries Per Second)写频率
Scenario 场景需要考虑如下:
- 需要设计哪些功能
- 需要承受多大的访问量(DAU:日活跃用户 MAU:月活跃用户)
- 需求者的要求
Service 服务
1.大系统拆分成小系统 2.小系统归并成完整系统
Storage 存储
- 关系型数据库:用户信息
- 非关系型数据库:推文、社交图谱
- 文件系统:图片、视频
- 缓存系统:高速访问,适合访问频率高的数据
Scale 升级
- 解决bug,设计缺陷
- 拓展功能
- 应对特殊情况
- 提高鲁棒性
- 提高拓展性,应对流量暴增
如何分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
验证系统的可用性和稳定性
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
个人总结
本次课程主要学习了:
- 系统设计