系统设计 | 青训营

74 阅读2分钟

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

为什么要做系统设计

个人:

  • 为了面试
  • 个人能力提升
  • 拓展技术视野

工作:

  • 业务驱动
  • 系统重构
  • 突破与创新

系统瓶颈和优化

  • 火焰图分析
  • 链路分析
  • 全链路压测

可行性验证

  • 链路梳理
  • 可观测性
  • 全链路测试
  • 稳定性控制
  • 容灾演练

电商和秒杀

基本概念

类目:类目是一个树状结构的系统,大体上可以分成4-5级。如手机->智能手机->苹果手机类目,在这里面,手机是一级类目,苹果手机是三级类目,也是叶子类目。

SPU:苹果6(商品聚合信息的最小单位),如手机->苹果手机->苹果6,苹果6就是SPU。

SKU:土豪金 16G 苹果6 (商品的不可再分的最小单元)。

秒杀的挑战

  • 资源有限性
  • 反欺诈
  • 高性能
  • 防止超卖
  • 流量管控
  • 扩展性
  • 鲁棒性

设计秒杀系统

场景分析

什么系统,需要哪些功能,多大的并发量

功能:

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

并发:

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

存储设计

数据如何组织,SQL 存储? NoSQL 存储?

通常来说,关系型数据库足以支撑业务运作。

为了减少数据库的压力,通常我们会把高频访问的数据放在 Redis 中。

服务设计

业务功能实现和逻辑整合

对于一个电商系统来说,通常需要有的服务:

子服务:

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

基础组件:

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

可扩展性

解决缺陷设计,提高鲁棒性、扩展性

流量隔离、CDN、缓存优化、流量管控

MQ 扩展、Redis 扩展、数据库扩展