写点什么

毕设:设计电商秒杀系统

用户头像
ifc177
关注
发布于: 17 小时前

【业务背景】

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

 

性能预估

用户量预估:日活 100W,假设会有 20%的人参与秒杀活动就是 20W

用户行为建模

假如 80%的用户是在最后 10 秒才浏览秒杀页面,页面访问 QPS 约为 20*80%/10≈1.6W:

假设有 50%浏览秒杀的页面的用户会参与秒杀活动:秒杀抢购的 TPS≈10W

 

整体架构图


秒杀基本业务场景


秒杀业务序列图

存储架构设计

按照业务类型区分

订单、库存、物流:MySQL 一主多从

排队:kafka

商品详情页缓存、用户信息、用户登录信息:redis 集群

缓存设计

采用 app-Web 容器-分布式缓存三级缓存策略

APP 缓存商品详情页

Web 容器缓存商品详情页

Redis 缓存商品详情页

负载均衡设计

采用 LVS 方式进行负载均衡,经过上文性能预估,LVS 足够满足性能要求

优化:秒杀轮询请求按照排队号进行 hash 指派

高性能设计

限流:app 端和服务端都 按照时间/频次限制用户的请求,app 端数值容忍度更高

服务端采用滑动时间窗方式计算,app 端采用固定时间窗计算

排队:秒杀排队设计

高可用设计

MySQL 在 MySQL 一主多从基础上在家一个备机即一主一备多从

机房接入多家网络运营商

可扩展设计

每个核心业务场景都是独立的微服务,针对业务强度变化对不同业务进行动态扩容

可运维可检测

对整体负载进行实时监控以及告警设置,活动之前对硬件进行整体扩容(激活储备硬件或采购新新的硬件)


用户头像

ifc177

关注

还未添加个人签名 2019.04.19 加入

还未添加个人简介

评论

发布
暂无评论
毕设:设计电商秒杀系统