这是我参与「第五届青训营 」伴学笔记创作活动的第10天
前言
本节课老师主要向我们介绍了如何设计一个秒杀系统,先是介绍了一些基础理论,之后对该项目代码进行了讲解。
1.系统设计方法论
1.评估系统指标
可用性、安全性、易用性、可维护性、扩展性、耦合性、伸缩性、性能
2.系统设计定义
为了达成某种目的,通过个体组成整体的过程
3.系统设计流程
- 场景分析(Scenario)
- 存储设计(Storage)
- 服务设计(Service)
- 可扩展性(Scale)
4.系统设计分析
- 火焰图分析
- 链路追踪
- 性能测试
5.如何保证可用性和稳定性
- 链路梳理:核心链路、流量漏斗、强弱关系
- 可观测性:链路追踪、核心监控、业务报警
- 全链路测试:压力测试、负载测试、容量测试
- 稳定性控制:系统限流、业务兜底、熔断降级
- 容灾演练:混沌工程、应急手册、容灾预案
2.电商秒杀系统
1.介绍
电商由供给侧、消费者侧和交易场景组成,就是线下交易转换为线上
商品:具有交易价值和属性的信息载体
- SPU:标准商品单元
- SKU:保持储存单元
2.特点
- 瞬时流量高
- 读多写少
- 实时性要求高
3.挑战
- 资源成本
- 高性能
- 扩展性
- 防止超卖
- 反欺诈
- 流量管控
- 鲁棒性
4.设计流程
-
场景
- 功能:秒杀活动发布;秒杀活动详情;秒杀下单
- 要求:高并发
-
存储
- MySQL->Redis->Localcache
数据库表单如下:
-
服务
- 子服务:用户服务、风控服务、活动服务、订单服务
- 基础组件:ID生成器、缓存组件、MQ组件、限流组件
-
扩展
- 流量隔离、CDN、缓存优化、流量管控等
5.整体系统架构图
6.秒杀流程图
小结
本文主要叙述了秒杀系统的流程和框架,实战部分等作者跑完代码再更新注意事项,小白大家多多包涵。
参考文献
- 字节跳动手把手教你做系统设计之秒杀系统教程