设计电商秒杀系统
【业务背景】
你作为一个电商创业公司的架构师,负责设计 6.18 大促秒杀系统的设计,你们的业务模式如下:
1. 你们挑选选品各大电商平台上畅销和好评的商品进行销售,每个品类不超过 20 个商品,目前做了 10 个品类;
2. 本次 6.18 秒杀选择了 1000 个充电宝,10 台 iPhone12 作为秒杀商品;
3. 正常的日活大约 100 万用户;
4. 老板要求万无一失。
【技术背景】
1. 技术团队以 Java 为主,已经落地了微服务架构;
2. 主要渠道是自有的 App(包括 iOS 和 Android)和微信小程序,为了促进用户转化为 App 用户,只有下载 App 才能参加秒杀活动;
3. 目前只有单机房。
【毕设要求】
1. 设计完整的架构,例如存储、负载均衡、缓存、高可用、可扩展等;
2. 大约 10 页以内的 PPT,每页 PPT 说明一项设计,包括架构设计和设计理由,无需详细解释备选方案。
【提示】
1. 分析考虑要全面,但并不意味着架构设计要面面俱到,如果分析后认为某些设计点可以不做,就在作业最后统一说明原因即可;
2. 如果没有思路,请对照模块 9 的 IM 案例;
3. 如果有的信息觉得不够全或者不够细,可以做出一定的假设,但不能天马行空,需要对照已有的业务背景和技术背景进行合理推断。
一、业务基本场景
用户规模存储性能估算:
【注册】
假设日活用户是注册用户的 1/10, 需要保存千万用户注册信息
【登录】
日活是百万,登录时读取用户信息是每天 100 万次
【浏览】
假设秒杀时有 80%的日活用户在线,并且每秒刷新一次商品页面,商品浏览 qps 为 80 万
【下单】
假设经过客户端、网关、业务服务器、缓存层层过滤,最后到达存储服务的流量只有接近于商品实际数量的请求数,只需要 1010qps
【支付】
支付的数量等于商品的总数量,等于 1010 条记录
存储架构设计
近千万用户注册信息,100 万登录请求,2000 条商品信息
redis 采用集群分片架构,秒杀场景下每秒集群需要承担请求 80 万次,每台需要承担 4w qps
负载均衡设计
采用多层级负载均衡,最大程度的分摊负载以及保证可用性
缓存设计
高可用架构设计
可扩展架构设计
拆分成多个微服务,方便日后继续扩展功能
评论