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

126 阅读2分钟

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

一、本堂课重点内容:

  • 系统设计方法论
  • 电商秒杀业务介绍
  • 课程实践
  • 课程总结

二、详细知识点介绍:

引言

  • 为什么要做系统设计

    • 个人

      For面试

      个人能力提升

      拓展技术视野

    • 工作

      业务驱动

      系统重构

      突破和创新

  • 系统设计的概念是什么

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

    系统

    • 关联的个体
    • 规则运作
    • 组成工作的整体

    设计

    • 设想和计划
    • 目的
    • 过程安排
  • 如何做系统设计

    • 4S分析法

    场景分析 (Scenario)

    • 什么系统,需要哪些功能,多大的并发量

    存储设计 (Storage)

    • 数据如何组织,Sgl存储,NoSgl存储

    服务设计 (Service)

    • 业务功能实现和逻辑整合

    可扩展性 (Scale)

    • 解决设计缺陷,提高鲁棒性、扩展性
  • 如何分析系统瓶颈和优化

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

    • 链路梳理
      • 核心链路
      • 流量漏斗
      • 强弱依赖
    • 可观测性
      • 链路追踪
      • 核心监控
      • 业务报警
    • 全链路测试
      • 压力测试
      • 负载测试
      • 容量测试
    • 稳定性控制
      • 系统限流
      • 业务兜底
      • 熔断降级
    • 容灾演练
      • 混沌工程
      • 应急手册
      • 容灾预案

电商和秒杀

基本概念

  • Spu(Standard Product Unit)
  • Sku(Stock Keeping Unit)
  • 秒杀业务的特点
    • 瞬时流量高
    • 读多写少
    • 实时性要求高

秒杀的挑战

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

设计秒杀系统

4S分析

  • 场景

    功能:

    • 秒杀活动发布
    • 秒杀商品详情
    • 秒杀下单

    并发:

    • 万人参与秒杀
    • QPS 1w+
    • TPS 1k+
  • 存储

    MySQL -> Redis -> Localcache

  • 服务

    子服务:

    • 用户服务
    • 风控服务
    • 活动服务
    • 订单服务

    基础组件:

    • ID生成器
    • 缓存组件
    • MQ组件
    • 限流组件
  • 扩展

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

系统架构图

实践

秒杀流程

总结

高性能系统的通用设计思想