写点什么

毕业设计—电商秒杀系统

作者:Leo
  • 2022 年 5 月 15 日
  • 本文字数:1065 字

    阅读完需:约 3 分钟

设计电商秒杀系统

【业务背景】

你作为一个电商创业公司的架构师,负责设计 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、用户注册登录:日活 100 万用户,整体用户假设有 1000 万

2、查询商品:最多有 200 个商品促销

3、创建订单:1010 个

复杂度分析:

高性能复杂度:在秒杀过程中存在瞬时高并发,可能会因为高并发导致查询变慢甚至宕机

高可用复杂度:在秒杀过程中,希望可以快速响应,老板要求万无一失

可扩展:已经落地了微服务架构,沿用既有架构进行扩展

存储性能估算:

200 个商品,假设人均购买 10 个,则写入订单 100 万 x10=1000 万

存储架构设计


本次秒杀总共产生的订单数为 1010 个,只会产生总订单量为 1010 个,所以采用 MySQL 主备架构进行存储即可,当主机出现宕机时,可以迅速切换为备机,防止服务不可用

  • 根据上述分析,QPS 为 2700/s,采用 Redis 集群即可

计算性能估算:

由于日活用户 100 万,假设秒杀期间 100 万用户有 80%参与秒杀,即 80 万

80 万用户在秒杀前 5 分钟会进入商品页面,并在秒杀开启的 2 秒钟内进行秒杀操作,则由此可以推算出商品页面的 QPS 约为:2700/s

计算架构负载均衡设计



防刷单:在秒杀时可以根据 ip,用户 Id 进行 hash 限制刷单操作

服务器实例个数:真正促成下单的 TPS:100/s,假设秒杀服务的 TPS 为 100/s,则这里部署三个实例,

下载 app:假设下载当天有 10%没有下载过 App),且集中在秒杀开始前 1 小时下载,则需要用 CDN 缓存。

高可用架构设计

采用漏桶算法进行高可用架构设计,采用漏桶算法可以尽可能小的丢弃请求


用户头像

Leo

关注

还未添加个人签名 2018.12.03 加入

还未添加个人简介

评论

发布
暂无评论
毕业设计—电商秒杀系统_Leo_InfoQ写作社区