这是我参与「第五届青训营」伴学笔记创作活动的第 10 天
为什么要做系统设计
个人:
- 为了面试
- 个人能力提升
- 拓展技术视野
工作:
- 业务驱动
- 系统重构
- 突破与创新
系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
可行性验证
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
电商和秒杀
基本概念
类目:类目是一个树状结构的系统,大体上可以分成4-5级。如手机->智能手机->苹果手机类目,在这里面,手机是一级类目,苹果手机是三级类目,也是叶子类目。
SPU:苹果6(商品聚合信息的最小单位),如手机->苹果手机->苹果6,苹果6就是SPU。
SKU:土豪金 16G 苹果6 (商品的不可再分的最小单元)。
秒杀的挑战
- 资源有限性
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
设计秒杀系统
场景分析
什么系统,需要哪些功能,多大的并发量
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
存储设计
数据如何组织,SQL 存储? NoSQL 存储?
通常来说,关系型数据库足以支撑业务运作。
为了减少数据库的压力,通常我们会把高频访问的数据放在 Redis 中。
服务设计
业务功能实现和逻辑整合
对于一个电商系统来说,通常需要有的服务:
子服务:
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件:
- ID 生成器
- 缓存组件
- MQ 组件
- 限流组件
可扩展性
解决缺陷设计,提高鲁棒性、扩展性
流量隔离、CDN、缓存优化、流量管控
MQ 扩展、Redis 扩展、数据库扩展