毕业设计项目
设计电商秒杀系统
【业务背景】
你作为一个电商创业公司的架构师,负责设计 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.缓存架构
评论