这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
系统设计
如何做系统设计
- 场景分析(Scenario)
什么系统,需要哪些功能,多大的并发量 - 存储设计(Storage)
数据如何组织,Sql存储,NoSql存储 - 服务设计(Service)
业务功能实现和逻辑整合 - 可扩展性(Scale)
解决设计缺陷,提高鲁棒性、扩展性
如何发现系统的瓶颈
火焰图分析,链路追踪,性能测试
如何保证可用性和稳定性
- 链路梳理: 核心链路,流量漏斗,强弱依赖
- 可观测性: 链路追踪,核心监控,业务报警
- 全链路测试: 压力测试,负载测试,容量测试
- 稳定性控制: 系统限流,业务兜底,熔断降级
- 容灾演练: 混沌工程,应急手册,容灾预案
电商秒杀业务介绍
秒杀业务的特点
瞬时流量高,读多写少,实时性要求高
秒杀业务的挑战
资源成本,反欺诈,高性能,防止超卖,流量管控,扩展性,鲁棒性
秒杀系统设计
场景,存储,服务,扩展
场景 (Scenario)
电商秒杀系统需要在满足如下功能的前提下,考虑高并发的问题:
功能:
1. 秒杀活动发布
2. 秒杀商品详情
3. 秒杀下单
并发:
1. 万人参与秒杀
2. QPS 1w+
3. TPS 1k+
存储 (Storage)
多级缓存
MySQL ——> Redis ——> Localcache
分库分表
服务 (Service)
- 子服务:用户服务、风控服务、活动服务、订单服务
- 基础组件:ID生成器、缓存组件、MQ组件、限流组件
扩展 (Scale)
流量隔离 CDN 缓存优化 流量管控
数据库扩展 MQ扩展 Redis扩展 服务水平扩展 服务垂直扩展