铺垫学习系统设计 | 青训营笔记

68 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

系统设计的定义

  • 系统
    • 关联的个体
    • 规则的运作
    • 组成工作的整体
  • 设计
    • 设想和计划
    • 目的
    • 过程安排

为了达成某种目的,通过个体组成整体的过过程

如何做系统设计

4S设计

  • 场景分析(Scenario) 什么系统,需要哪些功能,多大并发量
  • 存储设计(Storage) 数据如何组织,Sql存储还是Nosql存储
  • 服务设计(Service) 业务功能实现和逻辑整合
  • 可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性

电商系统设计

场景

  • 参与者:人、场、货
  • 商品概念:具有交易价值和属性的信息载体
秒杀业务特点
  1. 瞬时流量高(某时刻流量集中)
  2. 读多写少(用户行为分析)
  3. 实时性要求高(高速刷新)
秒杀挑战
  1. 高性能
  2. 扩展性
  3. 鲁棒性
  4. 资源成本
  5. 放止超卖
  6. 流量管控
  7. 反欺诈

存储

数据库表的设计(uml图)

服务

  • 子服务
    • 用户服务
    • 风控服务
    • 活动服务
    • 订单服务
    • 基础组件
  • ID生成器
    • 缓存组件
    • MQ组件(保护系统,异步)
    • 限流组件(保护系统,限流)

扩展

  1. 流量隔离
  2. CDN(资源分发)
  3. 缓存优化
  4. 流量管理
  5. 数据库扩展
  6. 数据库扩展
  7. MQ扩展(主从,多主多从,提高稳定性)
  8. Redis扩展
  9. 服务水平扩展(负载均衡,反向代理)
  10. 服务垂直扩展

小结

本次课程为实践课,本身基础知识不多,基本全部记录,个人以此课程作为预先学习,待以后实际接触时希望能够“似曾相识”,而系统设计个人感觉其实在平时项目实践中已经或多或少有考虑到,包括缓存,数据库设计,鲁棒性相关设计和扩展,而本次课程更加系统学习了系统设计,之后能够更加有意识地去优化项目而非习惯性地进行优化。