写点什么

模块九作业 - 设计电商秒杀系统

作者:Mars
  • 2022 年 1 月 16 日
  • 本文字数:830 字

    阅读完需:约 3 分钟

模块九作业-设计电商秒杀系统

业务场景

一、秒杀业务

1、每个用户需先登录

2、用户导航到秒杀商品页面

3、秒杀时间到进行抢购

4、抢购成功进行支付

二、正常业务

1、由于 6.18 秒杀活动,正常业务流量会增加,热门商品和其他商品会随之增加购买流量,按平时的 5 倍进行系统评估和扩容机制来支撑,假设正常业务足以支撑 5 倍流量。 —— 不做分析


用户量估算

业务背景日活 100 万

1、登录:秒杀活动开始前,用户已经提前登录——不考虑

2、秒杀商品页:用户一般都会频繁刷新页面,等待秒杀时间到——CDN/Nginx 缓存商品静态页面

3、抢购:用户一般会在抢购失败后,继续点击抢购——前端限制请求

4、支付:由于秒杀商品数量 1000 个充电宝 + 10 个 IPhone,支付请求量低——不考虑

5、发货:秒杀业务由于商品增加少,不影响发货——不考虑

存储性能估算

抢购记录存储:假设没条记录 64 字节,则需要 640M(1 千万 * 64 / 1000 / 1000)

计算性能估算

TPS:由于秒杀基本就集中在前 1 秒时间内,假设 10%的人参与抢购, 所以 TPS = 10 万

QPS:10 万

指标汇总

高性能——需要,TPS 10 万,QPS 10 万

高可用——需要,秒杀期间系统不能出问题,保证商品不超卖,不少卖

扩展性——不需要,秒杀系统业务单一,使用后就短时内不会再用

安全 ——需要,防止褥羊毛

成本 ——不考虑,满足指标前提下以节约成本为目标。

存储容量——不考虑,容量规划 1G 就够了

存储写性能——需要,TPS 10 万

存储读性能——需要,TPS 10 万

设计关键点

1、前端限制抢购只能一次请求,请求接入层限流

2、秒杀商品页静态资源缓存

3、多级负载均衡,要支持 10 万请求

4、异步支付

5、数据强一致性


存储架构设计

说明:秒杀系统存储容量小,一台 Mysql 可以支撑,秒杀抢购记录写入 TPS 10 万,可通过异步后台慢慢写入;Redis 存储秒杀商品数量,开启每次请求都刷盘机制,保证数量正确性;秒杀结果后把 Redis 的商品数量同步与 Mysql;

缓存架构设计


说明:Web 容器选择 Nginx,可缓存商品页静态资源;另 APP 终端可缓存静态资源;分布式缓存选择 Redis,可缓存秒杀商品梳理。

负载均衡架构设计


高可用存储架构设计

秒杀总体架构


用户头像

Mars

关注

还未添加个人签名 2018.04.26 加入

还未添加个人简介

评论

发布
暂无评论
模块九作业-设计电商秒杀系统