写点什么

电商秒杀系统架构设计

作者:浪飞
  • 2022 年 5 月 15 日
  • 本文字数:1017 字

    阅读完需:约 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.储存架构设计:

存储估算:

商品品类不超过 20 个,且只做了 10 个品类,秒杀只有充电宝和手机 iPhone,数据量 20*10=200;

商品的库存记录=商品的数量,数量=200;

支付记录大约等同于秒杀商品数,因此产生的支付记录=1010;

用户规模日活 100 万,属于原系统的存储设计范围,不在秒杀系统考虑之内;

假设全部日活用户参与秒杀活动,浏览了秒杀 10 个品类的商品,并且在秒杀前后 1min 内,商品的查询 QPS=1000000*10/60=16 万;

储值设计:

MySQL 主备;商品数据+库存数据+支付数据

Redis Cluster;缓存秒杀商品+库存信息;支撑 16 万 QPS 的读取;


2.计算架构设计

计算性能评估:

用户日活 100 万,假设全部日活用户参与秒杀活动,浏览了秒杀 10 个品类的商品,并且在秒杀前后 1min 内,商品的查询 QPS=1000000*10/60=16 万;

抢商品,假设全部日活用户参与,秒杀 10 秒结束,抢商品的流量,TPS=1000000/10=10 万;

计算架构之负载均衡架构:

计算架构之缓存架构:


3.可扩展架构设计:微服务拆分

秒杀系统复用公司已有的微服务基础设施;

创业公司,硬件成本,人力成本角度考虑,先上微服务基础设施,不一步到位,完善设施;


4.高可用架构设计

秒杀系统涉及的库存时强一致性的,且还是创业公司,从成本和业务考虑,不做多活,做灾备就可以;

同城灾备


用户头像

浪飞

关注

还未添加个人签名 2019.02.12 加入

还未添加个人简介

评论

发布
暂无评论
电商秒杀系统架构设计_浪飞_InfoQ写作社区