当前位置: 首页 > article >正文

经典秒杀问题

就像tb、jd的抢购一样,我们只有有限的商品和相对较大的人数,在某个时刻集中进行访问。

要求一个商品不能卖给两个人;相对公平、让提交早的人能抢到商品。

首先我们来考虑秒杀页面的问题

秒杀页面中会有一些图片、视频等相对较大的静态资源,如果存储在服务器中的话,假如资源有500K,两万个人来同时访问,就会消耗10G的流量,服务器肯定是承担不起的。

这时我们可以将图片、视频分配在CDN(内容分发网络)中。这样请求页面时,就不会直接到服务器中进行请求,会从就近的服务节点上进行请求。

其次秒杀系统应该单独部署,当这个服务器挂掉时,不影响其他服务器的使用。

还应该有时间的控制,不然通过改电脑时间,或者网页上的简单代码修改被提前抢购就不好了。

另外还有资源消耗的问题,假如有几万个人去抢购5台机器,这时大部分的请求是没必要交给后台的,所以可以设定在几十秒后,很多请求可以直接返回请求失败。

在首次过滤掉大量请求后,还是会有大量请求返回到服务器中。假如一台服务器每秒只能处理500次请求,这时又有几万条的数据进来。我们就不得不用上MQ的削峰来处理这个问题

使用MQ后,假如存到MQ就直接返回抢购成功,在高并发的情况下,可能会出现几个人同时抢到同一件物品。那么如何防止这种情况的发生呢?

可以用redis来做库存扣减,每消费一次就减一,为0后直接返回后面的请求失败。这样再次过滤掉大量请求,不过这样也无法防止超卖的发生。我们可以将这些请求重新封装消息放入MQ中,这之后才真正的从数据库中去进行商品秒杀的扣减。

http://www.lryc.cn/news/2420561.html

相关文章:

  • AT89S51/52单片机详细英文缩写解释汇总
  • 几个非常简单漂亮的手机版网页_有了这几个网站,我的工作效率提高了不止3倍!...
  • macOS 内核之 OS X 系统的起源
  • Firefox 9发布 可提升JavaScript性能锋利了html5
  • 10个jQuery技术博客[XiaoFeng收藏]
  • 僵尸国度.Z.Nation
  • 外贸干货|最完整的外贸出口流程,收藏起来耐心看完!
  • Android 实现Button的5种方法
  • 设计模式的艺术之道--组合模式
  • 实现窗体的展开与收起特效(Java)
  • VC++中使用_RecordSetPtr总结
  • MATLAB图像处理的开运算和噪声相关的基本操作-填充和去除—imfill与bwareaopen函数运算
  • js案例---相册选择功能
  • 高质量C\C++编程
  • 运维 常见故障排查
  • SAN (CVPR 2019) :基于二阶通道注意力机制的单图像超分网络
  • 超级实用!Android Studio的10大神器插件,让你的开发效率翻倍!
  • apple tv 开发_如何越狱您的第二代Apple TV以获得更多功能
  • 【linux】计算机内部体系结构
  • uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码...
  • 无线路由器桥接完整教程(不会断网)【图文详解】
  • 手机视频产品功能分析
  • 刺客信条3一直显示育碧服务器,刺客信条3免Uplay启动游戏的方法
  • 在电脑上优雅地使用 Flash Player
  • 公告板特效代码收集及实现
  • 使用Apache Shindig将社交内容引入自定义应用程序
  • ROS源代码阅读(7)——导航(Navigation)
  • 那两年炼就的Android内功修养
  • 【阿一网络安全】CS流量特征
  • 卡巴斯基KEY 、NOD32注册机——最新版