设计电商秒杀系统
你作为一个电商创业公司的架构师,负责设计 6.18 大促秒杀系统的设计,你们的业务模式如下:
1. 你们挑选选品各大电商平台上畅销和好评的商品进行销售,每个品类不超过 20 个商品,目前做了 10 个品类;
2. 本次 6.18 秒杀选择了 1000 个充电宝,10 台 iPhone 12 作为秒杀商品;
3. 正常的日活大约 100 万用户;
4. 老板要求万无一失。
一、业务分析
1、正常的日活大约 100 万用户,推测参与秒杀用户为 500 万。
2、要求万无一失,系统要高可用。
3、主要涉及用户操作主要有用户登录,浏览商品,商品秒杀。
4、使用 mysql 存储,Redis 缓存。
5、20 个商品,10 个品类,一共 200。
二、存储架构设计
1、浏览商品,500 万用户浏览商品,一分钟平均 浏览 5 次,QPS 计算如下:500W*5/60= 410000。
2、商品秒杀,可以通过 APP 端进行过滤一波,假设只有 10%的请求真正被发送,TPS 计算如下:500W * 0.1 = 50W。
参与秒杀商品的品种只有 2 种,可以使用 mysql 主备数据库进行存储,但是对于 500W 用户浏览商品,需要提前将商品信息缓存到 Redis cluster。
三、计算架构设计
秒杀时的 QPS 和 TPS 分别为 41W 和 50W,商品浏览请求量较大,使用 DNS->F5->Nginx->网关的多级负载均衡。假设 CDN 能够承载 90%的用户流量,那么剩下 10%的商品浏览请求进入系统,则请求 QPS 为 41K/s* 10%=4.1K/s,假设单台业务服务器处理能力是 1000/s,则机器数量为 40 台,按照 20%的预留量,最终机器数量为 50 台。商品秒杀的 TPS 为 50W/s,要完成 50W/S 的 TPS,需要 500 台服务器,加上一定预留量,600 台服务器差不多。
四、高可用
由于商品秒杀是特殊的独立业务,可以采用业务定制型异地多活,同城双中心即可。
评论