写点什么

电商秒杀系统设计

用户头像
文曲星
关注
发布于: 刚刚

业务背景

日活百万

10 品类 20 个商品

正常日活百万

秒杀 1000 台充电宝 10 台 iphone12


存储架构

系统的主要应用场景为用户注册、用户交易、平台管理品类及库存、用户检索浏览商品、系统记录访问日志

数据规模

系统主要的数据存储为:用户数据、商品数据、交易数据、系统访问应用日志

商品数据量:10 品类、20 个商品数据,商品描述信息包含数据、图片等信息,数据的库存信息等内容,假设每类库存单条数据 1K,库存量为每类 100 万条,则库存商品数据 1K*200*1000000/1024/1024= 200G。品类信息只有 200 可以忽略。

用户数据量: 单用户信息 10K,按可扩展考虑,用户量按 2000000 用户估计,则用户数据量 10K *2000000/1024/1024=20G

交易数据量:每日交易量转换率为 10%,及每日成交量为 10 万次,每次交易信息 10K,数据存储要求为 3 年,10K *1000000 *10%*365*3/1024/1024=1095G,交易数据考虑数据安全性。

访问数据量:日活百万,用户操作需记录条数 20 次,则每日操作记录 2 千万,每次操作日志 1K,数据存储要求为 3 年,60000000*1K*365*3/1024/1024=21900G

则所需的存储量,实际存储需求为 3.3T,交易数据、用户数据、商品数据采用 3 副本方式,访问数据采用 1 副本,则需要存储约为 8T。

存储架构:mysql 主从模式(一主两从),系统访问日志使用 ES 进行存储。交易数据增量同步到 ES 集群中。


计算架构

系统的主要应用场景为用户注册、用户交易、平台管理品类及库存、用户检索浏览商品、系统记录访问日志

新用户注册用户每天不会超过 1 万,可以忽略

系统访问量:日活百万,并假设每日登录次数为 3 次,每天登录时间集中在 8 点到晚上 11 点共 15 小时,则登录 TPS 为 1000000*3/15/3600=50

用户交易:每日交易量转换率为 10%,及每日成交量为 10 万次,每笔交易涉及交易信息写入、库存信息扣除操作为 3 次,每天操作时间集中在 8 点到晚上 11 点共 15 小时,则登录 TPS 为 1000000*10%*3/15/3600=5

平台日志记录:日活百万,用户操作需记录条数 50 次,则每日操作记录 50*10000000,每天操作时间集中在 8 点到晚上 11 点共 15 小时,则日志记录 TPS 为:100000000/15/3600=7000

用户检索浏览商品:日活百万,并假设每用户每日检索及查看商品 30 次,每天操作时间集中在 8 点到晚上 11 点共 15 小时,则检索的 QPS 为 30*1000000/15/3600=500

1、日志记录写入到 ES 中,同时应对用户检索采用 redis 主从模式缓存商品信息,交易数据 TPS 大约为 5,可以忽略。

2、TPS+QPS=8000 使用 nginx 集群即可。直接使用 nginx+vip



缓存

APP 缓存+应用缓存+分布式缓存即可。商品数据种类信息直接放入缓存,图片使用 CDN 方式


秒杀功能支撑

秒杀 1000 台充电宝 10 台 iphone12

请求拦截:

秒杀的瞬时并发,通过多层拦截方式。

1、nginx 的时间验证处理,秒杀会在 5 秒内结束,用户访问在秒杀开始 5 秒后请求自动返回活动结束。

2、redis 缓存实现活动令牌,令牌数量设置为秒杀数量,同时对同一用户的多次重复请求进行验证

3、通过后通过消息队列核减库存后,同步 db,并回复界面。


可扩展

采用微服务架构模式

用户服务 库存服务 交易服务(支付) 检索服务 秒杀服务 认证服务 日志服务


高可用

同城双中心(灾备)

跨机房业务保障

用户头像

文曲星

关注

还未添加个人签名 2020.08.26 加入

还未添加个人简介

评论

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