后端与秒杀系统设计| 青训营笔记

38 阅读2分钟

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

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

对系统设计的深入思考能极大的提升个人能力和工作水平

评估系统

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

如何做系统设计

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

保证可用性和稳定性手段

  • 链路梳理 核心链路 流量漏斗 强弱依赖
  • 可观测性 链路追踪(微服务必备) 核心监控 业务报警
  • 全链路测试 压力测试(个人用于压力测试工具:jmeter) 负载测试 容量测试
  • 稳定性控制 系统限流 业务兜底 熔断降级
  • 容灾演练(出错是必不可免的) 混沌工程 应急手册 容灾预案

电商

  • 商品:具有交易价值和属性的信息载体
  • SPU (Standard Product Unit):标准化产品单元。SPU是商品信息聚合的最小单位,是一组可复用、易检索标准化信息的集合,该集合描述了一个产品的特性。
  • SKU (Stock Keeping Unit):库存量单位

秒杀特点

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

挑战

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

秒杀系统

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

image-20230205224355300.png

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

img

  • 秒杀流程

img