写点什么

架构训练营 毕业设计

作者:吴霏
  • 2022 年 1 月 16 日
  • 本文字数:1871 字

    阅读完需:约 6 分钟

毕业设计:设计电商秒杀系统

【业务背景】

你作为一个电商创业公司的架构师,负责设计 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.业务背景

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

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

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

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

4.老板要求万无一失。

2.技术背景

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

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

3.目前只有单机房。


3.业务基本场景

注册登录->浏览商品->秒杀下单->支付/取消订单


1.使用手机号注册,每个手机号,只能注册一个账号;

2.账号要实名认证,未认证账号,不能参与秒杀;

3.一般商品购买流程,先减库存(下单),后付款,有待支付订单有效期;

4.秒杀商品流程,和一般商品购买流程一致,入口在活动时间点,才开启;

5.秒杀商品,每人限购一件;


4.总体架构思路

  1. 正常的日活大约 100 万用户,作为创业公司,日活比例假设高一些,占比 50%。则总用户有 200 万。活动期间,可能有新增 30-50 万。所以按照百万用户级别,进行秒杀设计,适应最大业务需求。

  2. 基于现有微服务架构,可以快速落地,且方便拓展;

  3. 用户接近 600 万,开始考虑千万级别架构设计。

  4. 秒杀场景,最重要的是库存管理,和用户体验。


5.存储架构设计

注册登录->浏览商品->秒杀下单->支付/取消订单


  • 注册:

百万用户注册信息。

  • 登录:

正常日活用户 100 万,秒杀活动,假设是两倍,登录数据是 200 万。

  • 浏览商品:

10 个品类,每个品类不超过 20 个商品;

两个秒杀商品;

  • 秒杀下单:

假设每天,每十个活跃用户下单 1 单,日单量为 10 万单

秒杀库存为:1010 个

  • 支付:

和下单量数量级类似


关系型数据还是遵照已有架构设计,使用 MySQL

使用的主备模式

由于没有达到 2000 万级,所以不考虑 MySQL 分库分表


6.计算架构设计

  • 注册:

估计短期新增注册用户每日 10 万,可以忽略。


  • 登录:

因为活动使用的是 app,大部分都是提前登录好的。假设需要登录的 50 万用户,集中在秒杀开始前 1 小时,登录 TPS 均值:500000/3600 = 139。


  • 浏览商品:

普通商品

10 个品类,每个品类不超过 20 个商品;

每次访问,需要更新商品库存信息,通过 redis 获取(redis 商品信息,每秒更新一次)

日活 100 万用户,每次看 50 个商品,80%集中在早中晚睡前 4 小时,则 QPS 计算为:1000000*50*0.8/(4*3600)=2778 QPS


  • 两个秒杀商品;

使用 APP,提前缓存商品基础信息。假设 200 万参与秒杀,其中 50 万,是第一次查看秒杀商品,时间集中在秒杀前 1 小时,则 QPS 均值:500000/3600 = 139。


  • 下单:

假设每天,每十个活跃用户下单 1 单,日单量为 10 万单

80%集中在早中晚睡前 4 小时,则 TPS 计算为:100000*50*0.8/(4*3600)=278 QPS


秒杀库存为:1010 个

秒杀共两个品类,1010 个商品,假设秒杀在 10s 内完成

假设有 200 万用户参与了秒杀,每个人发起了 2 次下单请求(APP 控制),在 20s 内秒杀结束。

则请求 TPS 为:2000000*2/20 = 20 万 TPS


  • 支付:

和下单量数量级类似


计算架构之负载均衡

  • 考虑到 QPS 超过 20 万,采用 LVS+nginx 作负载均衡设计

计算架构之缓存架构

  • 采用多级缓存

  • APP 要缓存秒杀页面

  • Nginx 要缓存页面静态资源

  • 后端全局缓存使用现有的 Redis

  • Redis 使用 Cluster

  • 将 1000 个充电宝和 10 台 Iphone12 分成 5 份,存在 Redis 分片中

计算架构之高可用

  • Nginx 采用虚拟 IP 和 keep-alived 实现高可用

  • 计算节点有 20 个,无状态,支持高可用

  • Redis Cluster 支持高可用

  • MySQL 主备


7.其他

可扩展架构设计-微服务拆分

用户服务、订单服务、物流服务、客服服务、秒杀服务

大数据架构设计

使用 ClickHouse

1.兼容 SQL,维护使用简单;

2.性能强劲,OLAP 分析平台;

用户头像

吴霏

关注

还未添加个人签名 2019.08.29 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营  毕业设计