Day10 【实践课】手把手教你做系统设计 | 青训营笔记

75 阅读2分钟

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

系统设计方法论

  • 系统设计的概念是什么

  • 如何做系统设计

    • 4S分析法(场景、存储、服务、扩展)
  • 如何分析系统瓶颈和优化

    • 火焰图分析
    • 链路分析
    • 全链路压测
  • 如何验证系统的可用性和稳定性

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

电商秒杀业务介绍

基本概念

  • Spu(Standard Product Unit)

商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

  • Sku(Stock Keeping Unit)

物理上不可分割的最小存货单元。

秒杀的特点

  • 瞬时流量高
  • 读多写少
  • 实时性要求高

秒杀的挑战

  • 资源有限性
  • 反欺诈
  • 高性能
  • 防止超卖
  • 流量管控
  • 扩展性
  • 鲁棒性

设计流程

4S分析

  • 场景分析

秒杀场景读多写少,可使用Redis作为缓存层,并且进行缓存预热

并发量大,不能直接调用扣减库存、生成订单等API,可以加入MQ进行流量削峰

  • 存储设计

Localcache、Redis、MySQL

将系统细分为如下模块:秒杀服务、商品服务、订单服务和支付服务

  • 服务设计

基础组件:ID生成器、缓存组件、MQ组件、限流组件

库存扣减应该加锁实现

借用Redis来实现分布式事务(seata,ZK都可以实现)

  • 可扩展性

流量隔离、流量管控、CDN、缓存优化、数据库扩展、Redis扩展、服务水平垂直扩展

系统架构图

uTools_1675697827238.png

课程实践

秒杀流程

uTools_1675697941158.png

课后总结

今天课程是实践课,课上学习了如何实现一个秒杀系统。之前的课程中一直学习的是Go语言,但这次实践课使用的却是java,不过从系统设计的角度出发,语言并不是最关键的因素。

高性能系统的通用设计思想非常重要,秒杀系统的扩展方面还有很大的空间