Bootstrap

毕业设计项目

设计电商秒杀系统

【业务背景】

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

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

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

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

4. 老板要求万无一失。

【技术背景】

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

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

3. 目前只有单机房。

【毕设要求】

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

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

【提示】

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

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

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

设计内容

1.基本业务场景

注册&登录 -> 选购 -> 秒杀 -> 付款

(1)每个用户需要首先从应用市场下载本APP并完成注册和登陆

(2)在秒杀之前或者秒杀时完成商品选购

(3)在秒杀时只有很少一部分用户能够进入到秒杀真正的业务逻辑处理中

(4)秒杀结束后,需要用户在指定时间内完成付款结算

2.存储架构设计

注册&登陆

正常日活100万,假设已有注册用户40万,且秒杀当天日活用户在200万,新增注册用户10万.则总的注册 用户数有50万。商品主要为读取数据,写入数据主要为注册和和登陆信息。Mysql采用主备即可。

选购

选购商品列表主要是1010个,这块由于是只读,所以直接使用Redis进行缓存

3.日活百万用户计算性能估算

商品读取

假设主要商品的读取发生在秒杀开始的前1个小时内,假设60%的用户会浏览所有商品,则总的商品读取峰值为50万*60%*1010/(60*60)~=9QPS;

秒杀

由于是秒杀业务,不是所有点击参与秒杀的注册用户最后都会进行秒杀筛选阶段。假设每个商品最多有3万用户进行了秒杀。秒杀时间在最后10分钟开始。则参与秒杀的请求次数峰值有3万*1010/10~=300TPS。

并假设在单个商品的秒杀用户中选择1000个进入最后的排序选择和去重环节

付款

付款请求是在秒杀之后按照商品数量,这块商品不是很大,请求量基本可以忽略不计

4.负载均衡

外部请求均来自APP

5.缓存架构