系统设计 | 青训营笔记

68 阅读2分钟

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

系统设计

为了达成某种目的,通过个体组成整体的过程

系统设计方法

  • 4S分析法
  • 场景分析(Scenario) 什么系统,需要哪些功能,多大的并发量
  • 存储设计(Storage) 数据如何组织,Sql存储,NoSql存储
  • 服务设计(Service) 业务功能实现和逻辑整合
  • 可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性

分析系统瓶颈和优化

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

验证系统的可用性和稳定性

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

评估系统标准

  • 可用性
  • 易用性
  • 可维护性
  • 安全性
  • 扩展性
  • 耦合性
  • 伸缩性
  • 性能

秒杀系统设计

秒杀业务的特点

  • 瞬时流量高
  • 读多写少
  • 实时性要求高

挑战

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

秒杀流程

  1. 用户下单抢购

  2. 系统响应

    1. User服务
    2. 风控服务
    3. 活动校验
    4. 预扣除库存(如果没有命中缓存,访问持久存储)
  3. 通过MQ进行削峰

  4. 订单服务对MQ进行消费

  5. 订单服务访问mysql扣除库存(需要检查订单是否有效)

  6. 通过支付系统支付

系统设计中,从场景、存储、服务、拓展四个方面考虑如下:

  1. 场景分析:确定系统的功能和需求,对系统的主要业务场景进行分析。
  2. 存储设计:确定存储数据的结构和方式,考虑到系统的数据量和并发读写需求,选择合适的数据库。
  3. 服务设计:设计系统的架构,确定系统的各个服务模块,如:订单服务、库存服务等。
  4. 可拓展性:考虑系统的可拓展性和高可用性,设计系统的架构以支持更大的请求量和更高的并发处理能力。

在系统设计中,要考虑如何利用现有的技术解决问题,并且不断评估系统的性能和效率,进行迭代优化。

而秒杀业务需要满足。高并发:秒杀业务的商品数量有限,同时有大量用户在秒杀,导致请求高并发。高吞吐量:由于高并发,秒杀业务需要高效处理请求,保证高吞吐量。实时处理:秒杀业务需要实时处理请求,保证用户的抢购结果能及时生效。数据一致性:秒杀业务需要保证商品数量的实时准确性,避免重复销售和超卖现象。安全性:秒杀业务需要防范恶意攻击,如刷单、机器人请求等,保证秒杀过程的公平性。