手把手教你做系统设计 | 青训营笔记

105 阅读2分钟

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

今日内容

学习完了青训营课程 手把手教你做系统设计 之后的一些总结。

课程内容

  1. 系统设计方法论
  2. 电商秒杀业务介绍
  3. 课程实践
  4. 课程总结

1. 系统设计方法论

  • 系统设计的一些问题
    1. 为什么要做系统设计
    2. 系统设计的定义是什么
    3. 怎么做系统设计,如何落地一个系统
    4. 系统功能实现之后,如何分析瓶颈并优化
    5. 如何验证系统的可用性和稳定性

  • 系统设计的定义:为了达成某种目的,通过个体组成整体的过程
    • 系统:关联的个体;规则运作;组成工作的整体
    • 设计:设想和计划;目的;过程安排

  • 如何做系统设计
    1. 场景分析
    2. 存储设计
    3. 服务设计
    4. 可扩展性
  • 发现系统瓶颈的方法
    1. 火焰图分析
    2. 链路追踪
    3. 性能测试
  • 如何保证可用性和稳定性
    1. 链路梳理:核心链路;流量漏斗;强弱依赖
    2. 可观测性:链路追踪;核心监控;业务报警
    3. 全链路测试:压力测试;负载测试;容量测试
    4. 稳定性控制:系统限流;业务兜底;熔断降级
    5. 容灾演练:混沌工程;应急手册;容灾预案

2. 电商秒杀业务介绍

秒杀业务的特点:瞬时流量高;读多写少;实时性要求高

秒杀业务的挑战:资源成本;高性能;防止超卖;反欺诈;流量管控;鲁棒性;扩展性

  • 如何设计秒杀系统:
    • 场景
      • 功能:秒杀活动发布;秒杀商品详情;秒杀下单
      • 并发:万人参与秒杀;QPS 1W+;TPS 1K+
    • 存储
      • Mysql -> Redis -> Localcache
    • 服务
      • 子服务:用户;风控;活动;订单
      • 基础组件:ID 生成器;缓存组件;MQ 组件;限流组件
    • 扩展
      • 流量隔离;CDN;缓存优化;流量管控;数据库扩展;MQ 扩展;Redis 扩展;服务水平扩展;服务垂直扩展

3. 课程实践

然后就开始讲代码了

4. 课程总结