秒杀系统|青训营笔记

68 阅读2分钟

photo-1674414163668-5fa253833b64.webp

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


系统设计方法论

系统设计的定义

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

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

设计

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

系统设计流程

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

如何发现系统的瓶颈

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

如何保证可用性和稳定性

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

电商秒杀业务

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

SPU(Standard Product Unit): 标准化产品单元,是商品信息聚合的最小单位,属性值、特性相同的商品就可以成为一个SPU

SKU(Stock Keeping Unit): 库存量单位,SKU是用来定价和管理库存的

秒杀业务特点

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

秒杀的挑战

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

如何设计秒杀系统

场景

TPS(Transactions Per Second):每秒事务数,TPS 是软件测试结果的测量单位。我们在进行服务性能压测时,接口层面最常关注的是最大 TPS 以及接口响应时间,个人理解 TPS 可以指一组逻辑相关的请求,而服务整体处理能力取决于处理能力最低模块的TPS值

QPS(Queries Per Second):意思是每秒查询率。指一台服务器每秒能够响应的查询次数,用于衡量特定的查询服务器在规定时间内所处理流量多少,主要针对专门用于查询的服务器的性能指标

功能

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

并发

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

存储

MYSQL -> Redis -> Localcache

服务

子服务

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

基础组件

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

扩展

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


参考资料

t.csdn.cn/aBTkC

t.csdn.cn/mgGkH