php 锁的使用场景,抢购秒杀的场景使用锁个人认为不太合理?
在抢购秒杀的构架设计中,网上很多都说为了防止超卖现象,应该使用锁机制来做,只有拿到锁的用户才能抢购下单;但是我觉得这个不太合理,在高并发下使用锁,一来造成请求阻塞,二来会造成抢购的不公平现象。
所以我觉得正确的设计应该是
1.抢购商品入队列,比如:redis队列,10个商品队列中就有10个元素。通过pop来取,这样避免了超卖现象。能取到元素说明抢购成功
2.由于秒杀是高并发的,所以需要异步下单处理,同样的可以把抢单成功的用户也加入到队列中比如:rabbitmq消息队列,通过消费者来处理订单数据的生成
不知道还有没有更好的解决方案?
在抢购秒杀的构架设计中,网上很多都说为了防止超卖现象,应该使用锁机制来做,只有拿到锁的用户才能抢购下单;但是我觉得这个不太合理,在高并发下使用锁,一来造成请求阻塞,二来会造成抢购的不公平现象。
所以我觉得正确的设计应该是
1.抢购商品入队列,比如:redis队列,10个商品队列中就有10个元素。通过pop来取,这样避免了超卖现象。能取到元素说明抢购成功
2.由于秒杀是高并发的,所以需要异步下单处理,同样的可以把抢单成功的用户也加入到队列中比如:rabbitmq消息队列,通过消费者来处理订单数据的生成
不知道还有没有更好的解决方案?
php 锁的使用场景,抢购秒杀的场景使用锁个人认为不太合理?相关推荐
- 抢购 mysql 优化_处理抢购、秒杀应用场景降低“超卖”发生几个优化方案(php)...
加深下文件锁理论 flock-轻便的咨询文件锁定 说明 参数 handle 文件系统指针,是典型地由fopen()创建的resource(资源). operation operation可以是以下值之 ...
- 分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案...
技术指标: PV(Page View, 页面浏览量)在千万级别 QPS(Query Per Second, 每秒处理请求数)在百万级别 数据量在千亿级别 接口响应速度不能超过150毫秒 用户提交请求到 ...
- 电商抢购秒杀系统的设计_1_应用场景分析
2019独角兽企业重金招聘Python工程师标准>>> 电商抢购秒杀系统的设计_1_应用场景分析 概述 所谓知已知彼,百战不殆,在开始详细介绍实战中的抢购秒杀系统时,我们了解一些抢购 ...
- php抢购排队是怎样做的,基于swoole的抢购排队通用中间件,适合抢购秒杀场景,跟具体业务解耦...
queue Note: Replace kcloze kcloze https://github.com/YaochufaTech/swoole-queue pei.greet@gmail.com y ...
- redis rua解决库存问题_Redis锁完美解决高并发秒杀问题
场景:一家网上商城做商品限量秒杀. 1 单机环境下的锁 将商品的数量存到Redis中.每个用户抢购前都需要到Redis中查询商品数量(代替mysql数据库.不考虑事务),如果商品数量大于0,则证明商品 ...
- Redis高并发场景下秒杀超卖解决
目录 1 什么是秒杀 2 为什么要防止超卖 3 单体架构常规秒杀 3.1 常规减库存代码 3.2 模拟高并发 3.3 超卖现象 3.4 分析原因 4 简单实现悲观乐观锁解决单体架构超卖 4.1 悲观锁 ...
- mysql悲观锁关键字_MySQL悲观锁 select for update实现秒杀案例(jfinal框架)
MySQL悲观锁 select for update实现秒杀案例(jfinal框架) 发布时间:2018-08-17作者:laosun阅读(4287) 为了方便测试,博主使用最新的jfinal框架,里 ...
- 简单实现redis实现高并发下的抢购/秒杀功能
简述 抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢? 常规写法: 查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大 ...
- 高并发写场景:秒杀系统库存扣减
前言 本文中的伪代码示例均以 PHP 作为编程语言 在设计秒杀系统的库存扣减逻辑时,可能一开始想到的代码是: /*** 商品库存扣减** @param int $skuId 商品ID* @param ...
最新文章
- 对集合使用Comparator
- DOS命令下Javac命令不能执行原因
- awk和cut分割字符区别
- Matlab概率统计编程指南
- 网络基础(二)及HTTP协议
- 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...
- java随机数函数_java随机函数详解
- cmw500综合测试仪使用_网络性能测试仪该怎么选
- I.MX6 Linux kernel LVDS backlight enable
- python中plot画图_matplotlib基础绘图命令之errorbar的使用
- 想创业?从学会需求谈判开始
- 创建数据库常用SQL语句
- 设计模式回顾——模板模式(C++)
- STM32 cubeIDE 堆栈大小设置
- 【阿里开发手册】所有的类都必须添加创建者和创建日期——在Idea中创建类时自动添加作者信息
- c语言数组中逗号的作用,c语言练习(4)--逗号分割字符串形成二维数组
- 全国高校食堂排行榜TOP10?!
- 理解微波射频中的特性阻抗、VSWR 和反射系数
- Django之爱鲜蜂项目开发 day06(三)
- Scrapy ImagesPipline的重写和使用
热门文章
- the Determine in June
- C#调用SCL2008 动态库SCL_API_cdecl.dll or SCL_API_Stdcall.dll,提示找不到指定模块
- 解决ie6、7 margin-bottom 失效问题
- 最新Visual Studio 2010 下载及学习资料
- 报错笔记:打开软件出现您缺少mfco42d.dll和msvcrtd.dl库文件
- php 导出csv字符串,PHP CSV字符串到数组
- db设计专用excel_注塑模具设计与加工解决方案
- idea alt+insert快捷键中implement
- 029_自己实现一个HashMap
- cf网络原因服务器无响应,CF由于网络原因连接服务器失败请重试 1033_10136