系统设计初探 | 青训营笔记

96 阅读2分钟

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

重点内容

  • 系统设计方法论
  • 电商秒杀业务

本节课老师以系统设计为切入点,介绍了电商秒杀业务的设计方法,主要讲了4S设计方法在真实场景中的应用,以及redis、RocketMQ等中间件和压力测试对系统做的性能提升。

系统设计

系统设计用人话来说就是,为了达成某种目的,通过个体组成整体的过程。

关于系统设计的流程,老师介绍了比较标准的4S设计方法:

image.png

  1. 场景分析(Scenario)什么系统?(电商系统) 需要哪些功能?(下单、秒杀、优惠券...) 多大并发量?
  2. 存储设计(Storage)数据如何组织?Sql存储?NoSql存储?(什么时候用MySQL、Redis)
  3. 服务设计(Service)业务功能实现和逻辑整合
  4. 可扩展性(Scale)解决设计缺陷,提高鲁棒性、扩展性(会不会导致超卖?是否开启事务?)

电商秒杀业务

image.png

这里我们要了解两个比较重要的概念,在涉及电商业务的开发中可能会遇到这两个概念。

  • SPU:Standard Product Unit
  • SKU:Stock Keeping Unit

用人话来解释下。

SPU就是商品聚合信息的最小单元,比如手机->小米品牌的手机->小米11,小米11就是SPU。

而SKU就是商品的不可再分的最小单元,比如 湖光秋色 16G 小米11(涉及到具体属性)。

PS:不知道有没有这个颜色哈,反正意思就是涉及到具体属性,比如颜色、型号、价格。

结合前面所讲的4S设计方法,我们如何设计秒杀系统呢?

  1. 场景。考虑到功能和并发量。
  2. 存储。考虑到MySQL设计数据库表(各个表之间的关联关系)、Redis作为缓存加快读写速度、Localcache。
  3. 服务。考虑到各种功能子服务(比如用户、订单、服务)和组件服务(MQ、缓存、限流、ID生成器)。
  4. 扩展。考虑到数据库扩展、MQ扩展、Redis扩展...