写点什么

模块 9 作业

作者:Asha
  • 2022 年 1 月 13 日
  • 本文字数:1089 字

    阅读完需:约 4 分钟

设计电商秒杀系统

【业务背景】

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

1.服务划分:将微服务划分为:会员服务,商品服务,库存服务,订单服务;

2.活跃预估:假设大促期间参与活动的日活为原来 3 倍,即 300 万日活;

3.可用性思路:老板要求万无一失,由于目前只有单机房,考虑使用同城双机房方式保证;

4.其他假定:必须登录才能参加秒杀活动


2. 性能估算

存储性能估算

对于注册,在秒杀开始前一小时内大约 200 万左右用户来注册,mysql 主备完全可以存储及访问

秒杀系统中需要存储秒杀物(充电宝+Iphone12)及促销物(10 个品类,每个品类不超过 20 个商品)信息;

秒杀成功用户 ID, 其数量为 1000+10=1010;

计算性能估算

正常日活为 100w, 618 大促期间,假设有 3 倍人数参与活动,则总共有 300w 人参与秒杀活动;

获取秒杀页面:假设平均而言提前 10 分钟获取,则:300w/10min =5000 QPS

参加秒杀活动:假设平均每个用户在 1 分钟之内完成秒杀,则:300w/60s =50000 TPS


存储架构

基于上述分析,数据存储量较少,几乎所有的秒杀行为及秒杀页面获取都可以在缓存中进行;

故可以采用:Mysql 主备 + Redis 主从 的存储架构。

计算架构

多级负载均衡架构设计

流量经 LVS 及 Nginx 分流到秒杀服务集群及常规服务集群:


多级缓存架构设计

采用三级缓存架构,其中分布式缓存采用 Redis 主从架构,WEB 容器缓存静态商品信息;



高可用架构设计

为了确保万无一失,且基于只有当个机房的现状,相关服务直接部署在云端,且将服务布置在同个区域的不同可用区,已实现同城灾备;

用户头像

Asha

关注

还未添加个人签名 2019.12.26 加入

还未添加个人简介

评论

发布
暂无评论
模块9作业