秒杀系统 | 青训营笔记

86 阅读2分钟

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

Day8:秒杀系统

系统设计方法论

系统设计定义

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

系统:

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

设计:

  • 设想和计划
  • 目的
  • 过程安排

如何做系统设计

  1. 场景分析:什么系统,需要哪些功能,多大的并发量
  2. 存储设计:数据如歌租住,sql存储,nosql存储
  3. 服务设计:业务功能实现和逻辑整合
  4. 可扩展性:解决设计缺陷,提高鲁棒性,扩展性

如何发现系统瓶颈

  • 火焰图分析:针对单个实例分析,cpu内存使用情况等
  • 链路追踪:知道服务经过哪些服务,看在哪个服务耗时大
  • 性能测试

如何保证可用性和稳定性

链路梳理:

  • 核心链路
  • 流量漏斗
  • 强弱依赖

可观测性:

  • 链路追踪
  • 核心监控
  • 业务报警

全链路测试:

  • 压力测试
  • 负载测试
  • 容量测试

稳定性控制:

  • 系统限流
  • 业务兜底
  • 熔断降级

容灾演练:

  • 混沌工程
  • 应急手册
  • 容灾预案

电商介绍

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

SPU:Standard Product Unit

SKU:Stock Keeping Unit

秒杀业务特点

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

秒杀挑战

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

如何设计秒杀系统

场景:

功能:

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

并发:

  • 万人参与秒杀
  • QPS 1W+
  • TPS 1K+

存储:

服务:

子服务:

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

基础组件:

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

扩展:

系统架构图

秒杀系统实践

秒杀流程图