秒杀抢购背景

秒杀抢购架构设计和模块划分

秒杀抢购接入层实现

电商网站的常规架构

常规状态下电商网站的架构体系如下:

秒杀抢购业务分析

正常电子商务流程:

查询商品 》 创建订单 》 扣减库存 》更新订单 》付款 》卖家发货 》确认收货

秒杀业务的特性:

(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;

假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:

1.对现有网站业务造成冲击

秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。

解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离

2. 高并发下的应用、数据库负载

用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连接数据库,会对应用服务器和数据库服务器造成负载压力。

解决方案:重新设计秒杀商品页面,不使用网站原来的商品详细页面,页面内容静态化,用户请求不需要经过应用服务

3. 突然增加的网络及服务器带宽

假设商品页面大小200K(主要是商品图片大小),那么需要的网络和服务器带宽是2G(200K×10000),这些网络带宽是因为秒杀活动新增的,超过网站平时使用的带宽。

解决方案:因为秒杀新增的网络带宽,必须和运营商重新购买或者租借。为了减轻网站服务器的压力,需要将秒杀商品页面缓存在CDN,同样需要和CDN服务商临时租借新增的出口带宽

4. 直接下单

秒杀的游戏规则是到了秒杀才能开始对商品下单购买,在此时间点之前,只能浏览商品信息,不能下单。而下单页面也是一个普通的URL,如果得到这个URL,不用等到秒杀开始就可以下单了。

解决方案:为了避免用户直接访问下单页面URL,需要将改URL动态化,即使秒杀系统的开发者也无法在秒杀开始前访问下单页面的URL。办法是在下单页面URL加入由服务器端生成的随机数作为参数,在秒杀开始的时候才能得到

5. 如何控制秒杀商品页面购买按钮的点亮

购买按钮只有在秒杀开始的时候才能点亮,在此之前是灰色的。如果该页面是动态生成的,当然可以在服务器端构造响应页面输出,控制该按钮是灰色还 是点亮,但是为了减轻服务器端负载压力,更好地利用CDN、反向代理等性能优化手段,该页面被设计为静态页面,缓存在CDN、反向代理服务器上,甚至用户浏览器上。秒杀开始时,用户刷新页面,请求根本不会到达应用服务器。

解决方案:使用JavaScript脚本控制,在秒杀商品静态页面中加入一个JavaScript文件引用,该JavaScript文件中包含 秒杀开始标志为否;当秒杀开始的时候生成一个新的JavaScript文件(文件名保持不变,只是内容不一样),更新秒杀开始标志为是,加入下单页面的URL及随机数参数(这个随机数只会产生一个,即所有人看到的URL都是同一个,服务器端可以用redis这种分布式缓存服务器来保存随机数),并被用户浏览器加载,控制秒杀商品页面的展示。这个JavaScript文件的加载可以加上随机版本号(例如xx.js?v=32353823),这样就不会被浏览器、CDN和反向代理服务器缓存

这个JavaScript文件非常小,即使每次浏览器刷新都访问JavaScript文件服务器也不会对服务器集群和网络带宽造成太大压力。

…………

更多内容参考:

秒杀系统架构分析与实战 - 陶邦仁的个人空间 - OSCHINA - 中文开源技术交流社区

秒杀抢购功能的演进

秒杀抢购的发展经历如下:

  1. 1.0版,没有独立的秒杀系统,代码高度耦合,由于MySQL的性能瓶颈大流量涌入会导致平台整体崩溃。
  2. 2.0版,使用Redis搭建独立的秒杀系统,实现系统解耦进行限流和过载保护,平台不会崩溃,但是秒杀系统可能会崩溃。
  3. 3.0版,对秒杀系统内部进行拆分,对秒杀系统单独做限流和过载保护等。

秒杀抢购架构

秒杀抢购架构图如下,其内部还有一个日志收集模块用于数据挖掘筛选黑名单等。

代码实现

接入层

逻辑层

go 商品秒杀系统架构设计相关推荐

  1. 浅谈秒杀系统架构设计

    秒杀是电子商务网站常见的一种营销手段. 原则 不要整个系统宕机. 即使系统故障,也不要将错误数据展示出来. 尽量保持公平公正. 实现效果 秒杀开始前,抢购按钮为活动未开始. 秒杀开始时,抢购按钮可以点 ...

  2. 网购秒杀系统架构设计

      秒杀是电子商务网站常见的一种营销手段:将少量的商品以极低的价格,在特定的时间点开始出售.秒杀对网站的推广有很多好处,也能给消费者带来利益,但是对网站技术却是极大的挑战:网站是为正常运营设计的,而秒 ...

  3. 网购秒杀系统架构设计案例分析

    大型网站技术架构-核心原理与案例分析 作者:李智慧 申明:文章版权归作者所有,若有侵权,请联系删除 秒杀是电子商务网站常见的一种营销手段:将少量商品(通常只有一件)以极低的价格,在特定的时间点开始出售 ...

  4. 系统架构设计——网购秒杀系统架构设计

    网购秒杀系统架构设计 秒杀是电子商务网站常见的一种营销手段:将少量商品(通常只有一件)以极低的价格,在特定的时间点开始出售.比如一元钱的手机,五元钱的电脑,十元钱的汽车等.因为商品价格诱人,而且数量有 ...

  5. 网购秒杀系统架构设计案例分析——《大型网站技术架构》笔记

    一.核心思想: 网站秒杀时的并发比正常运营时多的多,所以网站的秒杀业务不能使用正常的网站业务流程,也不能和正常的网站交易业务共用服务器(否则造成巨大浪费),必须设计部署专门的秒杀系统,进行专门应对 二 ...

  6. 案例3:网购秒杀系统架构设计案例

    秒杀系统应对策略: 1.秒杀系统独立部署 2.秒杀商品页面静态化 3.租借秒杀活动网络带宽 4.动态生成随机下单页面URL 秒杀系统架构设计 1.秒杀系统页面设计尽可能简单 2.购买按钮只有活动开始时 ...

  7. 网购秒杀系统架构设计 1

    本文是「大型网站技术架构 - 核心原理与案例分析」 第 12 章的学习笔记,感兴趣的朋友可以去购买 目录: 秒杀活动的技术挑战 秒杀活动的应对策略 秒杀系统架构设计 一.秒杀活动的技术挑战 场景: 某 ...

  8. 《苏宁易购:商品详情系统架构设计》读后感

    原文地址:https://mp.weixin.qq.com/s/5z1XEweso5wtJoZI0Z7Cfw 今天读了尹坚老师写的<苏宁易购:商品详情系统架构设计>,感受如下 首先介绍什么 ...

  9. 阿里双十一秒杀系统架构设计,有哪些技术关键点?

    马上要到双11了,就来谈谈如何设计一个秒杀系统架构 技术挑战 1. 对原有业务形成冲击 秒杀活动只是网站营销的一个附加活动,特点是:时间短.并发访问量大,如果和网站原有应用部署在一起,必然会对现有业务 ...

最新文章

  1. 为什么重新new两个线程线程号相同_C++ 20中的新线程(jthread)功能
  2. java lazy_Java性能优化要点之五: 队列与lazySet
  3. python人脸识别代码百度ai_python百度AI人脸识别API测试
  4. android对象申明,Kotlin中的对象表达式和对象声明的具体使用
  5. 31. 脱壳篇-什么是壳
  6. 卡尔曼滤波simulink例子,位移和速度2变量估计
  7. 什么样的程序猿,最容易被鄙视?
  8. 分治法的关键特征_经典算法思想2——分治(Divide-and-Conquer)
  9. Zabbix---6 监控 端口 连接数
  10. Bailian2937 异常细胞检测【水题】
  11. BZOJ1036[ZJOI2008] 树的统计
  12. dijkstra最短路径算法视频_最短路径之Dijkstra算法详细讲解
  13. Word文档没保存电脑死机了,重启打开文档一片空白怎么办?
  14. jquery 抓取微博_使用jQuery和RegexJavaScript进行客户端网络抓取
  15. 如何在移动开发者的寒冬中破冰而出?
  16. 详解Minimax算法与α-β剪枝
  17. web 打印服务器文件,【2人回答】web如何实现客户端打印在线文件(pdf,Word,Excel等),同时可以控制打印设置?-3D溜溜网...
  18. 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!
  19. 用vim和Markdown, 将MySQL导出的备份转换为HTML格式的数据字典
  20. 一分钟批量查询邮政快递的教程

热门文章

  1. ppt工作汇报免费模板
  2. 3D射击游戏作弊视频课程-卢嘉文-专题视频课程
  3. [Mdfs] lc77. 组合(组合类型枚举+题目总结+经典)
  4. office 2010打开word文件提示以安全模式打开
  5. 黑窗口检测wamp的命令_OpenCV AdaBoost + Haar目标检测技术内幕(上)
  6. 区块链+影视 GFC推动影视行业新模式
  7. 数据结构——时间复杂度
  8. 通过 Docker 搭建 Chevereto 图床
  9. 海马模拟器安装apicloud
  10. 工具技巧:Git 常用命令