写点什么

电商秒杀系统

  • 2022 年 1 月 23 日
  • 本文字数:528 字

    阅读完需:约 2 分钟

背景

商品销售:10 个品类,每个品类 20 个商品

秒杀商品:

·        1000 个充电宝

·        12 台 iPhone12

日活用户 100 万

不能出错

技术: java

渠道:IOS、Android、微信小程序

单机房

要求:

1.      存储、负载聚恒、缓存、高可用、可扩展

分析:

假设:

·        参与秒杀活动用户增长为原来 5 倍,即 500 万

·        每个秒杀时间为 5 分钟,其中 40%秒杀流量集中在前三秒钟:QPS: 500 万*0.4/3 ≈ 700000

·        因为秒杀活动本身有很大的随机性,可以在客户端对部分用户直接返会结果。假设对 60%用户直接返回,则调整后的 TPS ≈ 280000

为了最大程度减少秒杀对其他业务的影响,建议将秒杀服务单独部署

服务拆分


存储

单台 Redis 最大 TPS=100000,因此需要 redis cluster 作为缓存方案,

秒杀商品较少,最终支付用户数据量较少,因此持久化数据存储采用 mysql 主备方案

将秒杀页面静态化,并提前缓存在客户端,同时将秒杀页面存储在 CDN

计算

QPS=280000,3~4 台 Nginx 即可。

秒杀应用服务器 30 台,每台 QPS=10000

 

负载均衡采用:轮询,保证各个服务器流量大致相同

高可用:在秒杀应用内,为了防止瞬时流量过高可以采用滑动窗口限流算法


架构图


其他

扩展:秒杀有单独服务器处理,避免影响正常页面,也方便后期秒杀业务扩展


用户头像

还未添加个人签名 2020.06.23 加入

还未添加个人简介

评论

发布
暂无评论
电商秒杀系统