架构营模块九作业
秒杀系统架构毕业设计
1、总体分析
a. 正常日货已经达到 100 万,推断用户数量在千万级别,秒杀活动大概会带来 5 倍流量进来,所以预计流量 500 万。
b. 基于业务已经落地微服务,为了秒杀活动不影响正常业务请求,可以将秒杀系统单独部署。
c. 商品及其品类并不多,可以考虑使用 MySQL 主备+redis 缓存存储即可。
d. 秒杀商品固定,并且只能下载 app 才能参加活动,可以在 app 本地做页面缓存。后端可以采取 redis 进行数据缓存。
e. 服务端可以增加消息队列进行活动过程中流量的削峰填谷,复制大量请求压垮服务器。
f. 后端计算架构可以采取 Nginx 做负载均衡,是流量请求到不同的后端应用服务器上。
2、性能估算
a. 存储性能估算
秒杀系统中需要存储秒杀物(充电宝+Iphone12)及促销物(10 个品类,每个品类不超过 20 个商品)信息。
秒杀成功用户 ID, 其数量为 1000+10=1010。
b. 计算性能估算
正常日活为 100w, 大促期间,假设有 5 倍人数参与活动,则总共有 500w 人参与秒杀活动;
获取秒杀页面:假设平均而言提前 10 分钟获取,则:500w/10min =8333 QPS
参加秒杀活动:假设平均每个用户在 1 分钟之内完成秒杀,则:500w/60s =83333 TPS
3、架构设计
a. 存储架构设计
b. 计算架构设计
c. 缓存架构设计
d. 负载均衡架构设计
4、其他架构设计
a. 高可用架构设计
为了避免秒杀活动的大量流量压垮服务器,可以将活动单独部署到统统双机房,做到同城双活,从而提高系统可用性。
b. 服务限流
因为秒杀商品数远少于用户请求数量,可以使用令牌桶控制秒杀流量,通过将令牌数设置成商品数量一样的策略,当两者相同时,就可以将其他流量丢弃掉,使得只有少部分秒杀到商品的流量才会进入后续服务。
版权声明: 本文为 InfoQ 作者【GTiger】的原创文章。
原文链接:【http://xie.infoq.cn/article/f606e7152d31e0492e020581b】。文章转载请联系作者。
评论