系统设计 | 青训营笔记

123 阅读2分钟

系统设计 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天,主要记录相关的知识点。

本堂课重点内容

  • 系统设计方法论

系统设计

系统设计:为了达成某种目的,通过个体组成整体的过程。

系统设计的流程:

  1. 场景分析:什么系统,需要什么功能,多大的并发量
  2. 存储设计:数组如何组织,sql存储,nosql存储
  3. 服务设计:业务功能实现与逻辑整合
  4. 可扩展性:解决设计缺陷,提高鲁棒性,扩展性

如何做系统设计?

4S分析法:该方法将系统设计分为四个部分

  1. Scenario 场景:需要设计哪些功能,设计的质量性能等等需要有什么要求
  2. Service 服务:大系统拆分成小系统
  3. Storage 存储:数据如何存储,如何访问
  4. Scale 升级:优化维护,解决缺陷,处理可能遇到的问题

常用术语:

  • Concurrent User 并发用户
  • 日活跃*用户平均请求次数/一天多少秒=每秒请求数
  • 请求峰值
  • 增长量/变化的需求
  • Read QPS(Queries Per Second)读频率
  • Write QPS(Queries Per Second)写频率

Scenario 场景需要考虑如下:

  • 需要设计哪些功能
  • 需要承受多大的访问量(DAU:日活跃用户 MAU:月活跃用户)
  • 需求者的要求

Service 服务

1.大系统拆分成小系统 2.小系统归并成完整系统

Storage 存储

  • 关系型数据库:用户信息
  • 非关系型数据库:推文、社交图谱
  • 文件系统:图片、视频
  • 缓存系统:高速访问,适合访问频率高的数据

Scale 升级

  • 解决bug,设计缺陷
  • 拓展功能
  • 应对特殊情况
  • 提高鲁棒性
  • 提高拓展性,应对流量暴增

如何分析系统瓶颈和优化

  • 火焰图分析
  • 链路分析
  • 全链路压测

验证系统的可用性和稳定性

  • 链路梳理
  • 可观测性
  • 全链路测试
  • 稳定性控制
  • 容灾演练

个人总结

本次课程主要学习了:

  • 系统设计