写点什么

架构实战训练营 - 模块 9- 作业

作者:温安适
  • 2022 年 2 月 06 日
  • 本文字数:1343 字

    阅读完需:约 4 分钟

毕业设计项目

设计电商秒杀系统


【业务背景】


你作为一个电商创业公司的架构师,负责设计 6.18 大促秒杀系统的设计,你们的业务模式如下:


  1. 你们挑选选品各大电商平台上畅销和好评的商品进行销售,每个品类不超过 20 个商品,目前做了 10 个品类;

  2. 本次 6.18 秒杀选择了 1000 个充电宝,10 台 iPhone 12 作为秒杀商品;

  3. 正常的日活大约 100 万用户;

  4. 老板要求万无一失。


【技术背景】


  1. 技术团队以 Java 为主,已经落地了微服务架构;

  2. 主要渠道是自有的 App(包括 iOS 和 Android)和微信小程序,为了促进用户转化为 App 用户,只有下载 App 才能参加秒杀活动;

  3. 目前只有单机房。


【毕设要求】


  1. 设计完整的架构,例如存储、负载均衡、缓存、高可用、可扩展等;

  2. 大约 10 页以内的 PPT,每页 PPT 说明一项设计,包括架构设计和设计理由,无需详细解释备选方案。


【提示】


  1. 分析考虑要全面,但并不意味着架构设计要面面俱到,如果分析后认为某些设计点可以不做,就在作业最后统一说明原因即可;

  2. 如果没有思路,请对照模块 9 的 IM 案例;

  3. 如果有的信息觉得不够全或者不够细,可以做出一定的假设,但不能天马行空,需要对照已有的业务背景和技术背景进行合理推断。

情景假设

技术架构 Spring cloud,数据库:Mysql,缓存:Redis,

存储设计

商品的库存是核心设计要点。

估算性能需求

日活 100W,秒杀场景按照 10 倍估计,即秒杀时用户 1000W。

读性能估计

假设秒杀物品,每个用户要访问都要访问,并且秒杀商品,将在 100s 内卖光。


则读取性能 qps=1000W/100s = 10W

写性能估计

系统采用,限流,排队措施,只有拿到许可的用户才可以修改库存,限流同时修改库存的用户为 500,


则写性能 tps= 500

存储系统选择

1000 充电瓶,12 台 iphone,单机即可存储。


写入 tps 仅为 500,单机即可。


读取 qps=10W


不需要自动切换,


选用 redis 的 master-slave 模式,1 主 9 从

存储结构设计

string+list 存储

string 存储商品信息,仅需查询 1 次,App 内缓存即可


key:商品 Id,value:商品信息(充电宝,iphone),


list 存储商品数量,每次都需要查询


key: 商品 id,list 的 item :1 表示数量


list 的 size 表示,商品数量。


例如充电宝 1000,则 list 的就有 1000 个 item ,每个 item 为 1.

读操作

第一次读取读取 2 个接口


1 个接口获取商品信息:查询 String 类型的 redis 库,之后 app 本地缓存。


每次都查询商品的数量:


更加商品 Id,查询 list 的 size 表示商品数量。

写操作

使用 rpop 命令,执行扣减库存。如果 return ,null 表示扣减失败


rpop 商品Id
复制代码

计算架构设计

缓存架构设计

基于假设,秒杀商品存储在 redis,订单存储在 mysql


采用多级缓存架构,不需要应用内缓存。


大体为:


app 缓存(商品基本信息)->CDN 缓存(商品图片)->web 应用缓存->分布式缓存(redis,商品信息,用户信息等)->mysql(订单等业务关键数据)



负载均衡架构

根据之前的性能估算 QPS =10W, 扣库存 tps=500


需要负载均衡,假设单台服务器 tps=1000,需要 100 台服务器。采用 3 级负载均衡架构,F5 贵。


nginx 性能 10W 满足要求。



接口高可用设计

限流

app 端:

​ 限制请求次数,例如按钮变灰。


生产随机数,按 80%概率向后请求

接入端限流:

限制单一用户 5s 内请求 1 次,限流浏览请求,不限流下单请求。

微服务限流:

​ 丢弃无法处理的请求

排队

请求缓存 + 同步改异步 + 请求端轮询



服务划分

秒杀属于临时促销,采用单独服务部署上线

不做异地多活

秒杀很快,不用做异地多活,挂了就再来一次秒杀

用户头像

温安适

关注

还未添加个人签名 2020.03.29 加入

还未添加个人简介

评论

发布
暂无评论
架构实战训练营-模块9-作业