电商秒杀系统架构设计
一:背景描述
1.1 业务背景
作为一个电商创业公司的架构师,负责设计 6.18 大促秒杀系统的设计,你们的业务模式如下:
你们挑选选品各大电商平台上畅销和好评的商品进行销售,每个品类不超过 20 个商品,目前做了 10 个品类;
本次 6.18 秒杀选择了 1000 个充电宝,10 台 iPhone 12 作为秒杀商品;
正常的日活大约 100 万用户;
老板要求万无一失
1.2 技术背景
技术团队以 Java 为主,已经落地了微服务架构
主要渠道是自有的 App(包括 iOS 和 Android)和微信小程序,为了促进用户转化为 App 用户,只有下载 App 才能参加秒杀活动;
目前只有单机房
二:架构设计
架构设计需要保证秒杀活动的顺利进行,系统需要支持高性能(高并发)。日活用户 100w,用户量上千万。但由于商城对库存、余额的强一致性要求。依然继续维持单机房方案。
存储设计
商品、订单信息在主系统架构内已有相关服务。秒杀服务只需要存储商品、库存、下单的排队队列状态的缓存信息。
使用 Redis 存储库存、秒杀商品信息
缓存的主要请求压力来自库存查询。秒杀商品只有两个。使用一主一从的方案即可保证查询
负载均衡
秒杀商品类目已决定,且只能在 APP 上进行,可以通过缓存+多级负载均衡减少对商品页的请求。
用户下单前,使用验证码缓冲秒杀开始的请求量
使用消息队列缓存下单请求,通过排队的方式消峰订单创建和库存扣除。
评论