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

102 阅读2分钟

手把手教你做系统设计之秒杀系统

这是我参加【第五届青训营】伴学笔记创作活动的第10天

课程目标

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

系统设计方法论

为什么要做系统设计

  • 个人: 为了面试、个人能力提升、拓展技术视野
  • 工作:业务驱动、系统重构、突破和创新

如何评估一个系统

  • 可用性
  • 易用性
  • 安全性
  • 性能
  • 扩展性
  • 耦合性
  • 可维护性
  • 伸缩性

系统设计定义

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

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

如何做系统设计

image.png

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

如何发现系统的瓶颈

  • 火焰图分析
  • 链路追踪
  • 性能测试

如何保证可用性和稳定性

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

电商秒杀业务介绍

电商介绍

image.png

商品:具有交易价值和属性的信息载体

秒杀业务的特点

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

秒杀的挑战

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

如何设计秒杀系统

  • 场景
    • 功能
      • 秒杀活动发布
      • 秒杀商品详情
      • 秒杀下单
    • 并发
      • 万人参与秒杀
      • QPS 1W+
      • TPS 1K+
  • 存储
    • Localcache
    • Redis
    • MySQL

image.png

  • 服务
    • 子服务
      • 用户服务
      • 风控服务
      • 活动服务
      • 订单服务
    • 基础组件
      • ID生成器
      • 缓存组件
      • MQ组件
      • 限流组件
  • 扩展
    • 流量隔离
    • CDN
    • 缓存优化
    • 流量管控
    • 数据库扩展
    • 服务水平扩展
    • MQ扩展
    • Redis扩展
    • 服务垂直扩展

系统架构图

image.png

课程实践

image.png

课程总结

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

  • 服务无状态
  • 批量写入
  • 最终一致性

总结:

本节课详细讲解系统设计的方法论和秒杀系统实践,做了设计思想的总结,梳理了核心思想和重点。