写点什么

架构训练营毕业设计—电商秒杀系统

作者:yhjhero
  • 2022 年 5 月 15 日
  • 本文字数:1844 字

    阅读完需:约 6 分钟

设计电商秒杀系统

【业务背景】

你作为一个电商创业公司的架构师,负责设计 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. 如果有的信息觉得不够全或者不够细,可以做出一定的假设,但不能天马行空,需要对照已有的业务背景和技术背景进行合理推断。


一、业务基本场景


1、可以从自有 App(包括 iOS 和 Android)和微信小程序注册登录,购买商品;

2、用户即使不登录也可以浏览商品;

3、秒杀活动只能通过登录自有 App 参加,微信小程序上能看到秒杀活动介绍,但是提示需下载 APP 参与;

4、秒杀采用“拍下减库存”的方式,对用户体验会好些;

5、秒杀一般是定时上架,用户可以看到该商品,但是无法点击“立即购买”的按钮,秒杀开始前用户会快速刷新商品页面,访问量很大,在秒杀开始的时候抢先进入下单页面;

6、秒杀时,只有用户提交的第一个订单发送给网站的订单子系统;

7、秒杀活动是一种营销手段,不能影响商城的日常应用。


二、存储架构设计

1、秒杀系统存储性能估算


【注册】

日活大约 100 万用户,假设日活占用户总数的 20%,则实际用户约为 500 万,假设秒杀活动吸引 10 万新用户注册。

【登录】

日活大约 100 万用户,假设秒杀活动吸引 200 万用户参加,则需要存储 200 万条用户的登录信息。

【商品信息】

需要存储的商品有( 10 个品类 )*(每个品类不超过 20 个) = 200 条。

参与秒杀的用户会快速刷新商品页面,假设每个用户刷新 10 次,则商品信息的请求次数是 200 万*10=2000 万。

【订单】

秒杀商品有( 1000 个充电宝)+ (10 台 iPhone 12) = 1010 个,所以秒杀订单有 1010 条。

假设当天的用户平均有 1 条订单,则当天的订单数据有 200 万 条,每个用户查询订单 2 次,则有 400 万 条订单查询请求。


2、存储架构设计


三、计算架构设计

1、秒杀系统计算性能估算

【注册】

假设秒杀活动吸引 10 万新用户注册。

【登录】

假设 200 万用户参加,集中在秒杀前 1 小时登录,则登录 TPS 均值:200 万 /3600 = 556。

【商品信息】

参与秒杀的用户会快速刷新商品页面,假设每个用户刷新 10 次,且集中在秒杀前 1 小时,

则查看商品信息的 QPS 是 200 万*10/60*60 = 5556。

【订单】

每个用户发出一个秒杀订单请求,假设集中在秒杀开始后的 5s 内,则秒杀订单请求的 TPS=200 万/5=40 万。

由于秒杀商品只有 1010 个,最终有效的秒杀订单只有 1010 条。

假设当天的用户平均有 1 条订单,则当天的订单数据有 200 万 条,假设订单集中在秒杀开始前 1 小时,

则生成订单的 TPS = 200 万/3600 = 556。

假设用户在秒杀结束后 1 小时内查询订单 2 次,则订单查询请求的 TPS=200 万*2/3600=1111。


2、计算架构之负载均衡


3、计算架构之缓存架构

【下载 App】

假设参加秒杀活动的用户中有 10%没有下载过 App(大小为 50MB),且集中在秒杀开始前 1 小时下载,则需要的带宽为 20 万*50MB/3600s=2778MB/s,用 CDN 缓存。

【秒杀页面】

秒杀前,用户会不断刷新秒杀页面,造成大量页面请求,为了减轻服务端的压力,秒杀页面一般设计成静态页面,跟普通的商品详情页分开,缓存在 App、CDN 上。这样刷新秒杀页面产生的请求,只有少部分动态验证请求到达服务端,减轻了服务端的压力。


四、高可用架构设计

1. 秒杀活动非常态,是一种营销手段,持续时间短,但是会产生比平时大数十倍的页面访问流量和下单流量,如果将秒杀活动和商城的普通应用部署在一起,可能会对日常业务造成冲击,为了提高可用性,

可以将秒杀系统独立部署,甚至使用独立域名,使其完全隔离。


2.由于秒杀请求的 TPS 非常大,可以使用排队架构,收到请求后并不立即处理,而是将请求放入队列,系统根据能力异步处理。


五、可扩展架构设计

技术团队以 Java 为主,已经落地了微服务架构,可以选择 Spring Cloud 作为微服务基础框架。


用户头像

yhjhero

关注

还未添加个人签名 2020.09.05 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营毕业设计—电商秒杀系统_#架构训练营_yhjhero_InfoQ写作社区