[02实践应用 - 秒杀系统] 10 - 系统设计 - 秒杀系统 | 青训营笔记

11 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第10天。今天的内容是关于系统设计的,此处主要记录系统设计相关的理论,并基于秒杀系统进行一个实例设计。

1 系统设计的方法

  1. 为什么做系统设计?对个人而言,可以带来能力提升、拓展视野;对工作中,在业务驱动,完成系统重构可以使用,进行一些突破创新。
  2. 系统设计定义是什么?安全性、可用性、性能、易用性、可维护性、扩展性、耦合性、伸缩性等。
  3. 怎么做系统设计?如何落地?系统是一些关联的个体按照特定的规则运作,组成工作的整体。设计包括设想目的和计划过程安排。换言之,系统是为了达成某种目的,通过个体组成整体的过程
  4. 系统设计的流程是什么?可参考流程之一 4S 分析法:场景设计 Scenario -> 存储设计 Storage -> 服务设计 Storage -> 可扩展性 Scale。
  5. 功能实现后如何发现瓶颈进行优化?火焰图分析、链路追踪、性能测试。
  6. 如何验证可用性和稳定性?链路梳理(找到核心链路,重点保障;流量漏斗,例如购物车中的内容只有部分下单;强弱依赖区分是否可以降级)、可观测性(链路追踪;核心指标监控;业务报警)、全链路测试(压力测试;负载测试;容量测试)、稳定性控制(系统限流;业务兜底;容量降级)、容灾演练(混沌工程,故障注入演练;应急手册;容灾预案)。

2 电商秒杀业务

2.1 基本概念

电商系统的主体:人(消费侧)、货(供给侧)、场(市场环境)

在传统电商、社交电商(如拼多多、微商)、内容电商(如直播电商)的发展过程中,加强了人与货的联系。

商品:具有交易价值(双方都认可)和属性的信息载体。

  • 标准产品单元 SPU = standard product unit ,针对商品
  • 库存保持单元 SKU = stock keeping unit ,针对交易

2.2 秒杀业务

秒杀业务特点:瞬时流量高、读多写少(查看商品、刷新操作都是读,下单是写)、实时性要求高

秒杀业务的挑战:资源成本高、反欺诈、高性能、防止超卖、扩展性、流量控制、鲁棒性

2.3 秒杀系统设计

按照 4S 分析法,

  • 场景:功能包括秒杀信息的的发布、产品详情、秒杀下单;并发情况大致是万人参与,QPS > 10000,TPS > 1000
  • 存储:底层 MySQL -> 缓存+性能优化 Redis -> Localcache
  • 服务:子服务主要包括用户服务、风控服务、活动服务和订单服务;涉及的组件包括 ID 生成器、缓存组件、MQ 组件(削峰)和限流组件
  • 扩展:流量隔离、CDN(内容分发网络,提高静态资源使用)、缓存优化、流量管控;此外还有数据库扩展(读写分离)、服务扩展(负载均衡)、MQ 扩展、Redis 扩展和服务垂直扩展