对于抢票、秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案:

方案一:使用队列来实现

可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧

比如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。

方案二:当有多台服务器时,可以采用分流的形式实现

假设有m张票, 有n台产品服务器接收请求,有x个请求路由服务器随机转发

直接给每台产品服务器分配 m/n张票

每台产品服务器内存做计数器,比如允许m/n*(1+0.1)个人进来。

当内存计数器已满:

后面进的人, 直接跳到到转到活动结束的静态页面,

通知路由服务器,不在路由到这台服务器(这个值得商讨)。

所有产品服务器进来的m/n*(1+0.1)个人再全部转发到一台付款服务器上,进入付款环节,看谁手快了,这时候人少,加锁什么的就简单的。

方案三、如果是单服务器,可以使用Memcache锁来实现

product_key 为票的key

product_lock_key 为票锁key

当product_key存在于memcached中时,所有用户都可以进入下单流程。

当进入支付流程时,首先往memcached存放add(product_lock_key, “1″),

如果返回成功,进入支付流程。

如果不成,则说明已经有人进入支付流程,则线程等待N秒,递归执行add操作。

/*************************************************************/

我通过你的问题,想象了一下你的环境。

可能是 有100个票。 10万人抢。

你可以在服务器上做一个消息列队。不论多少人抢票,都先放入消息列队中。这样,我们就把高并发,变成了统一的单线程。

这时候一切都好办了。优点是缓解了MYSQL的瞬时压力

但缺点是,如果1秒内1万人点击抢票。有可能会造成瞬时用户访问困难。(因为大家都在列队)

如果你觉得慢了几百毫秒不能忍,那你就需要换一个做法:

做一个竞争锁,防止多个用户同时获取一张票。(票在MYSQL中)

在内存中存入一个标签,来确定是否还有票。

当内存标签说:没有票了。 剩下的用户一律歇菜。

这样的优点是不论MYSQL,还是用户,都很轻松。

缺点是,稍微有点小麻烦。 看你具体需求了。

mysql 抢票_PHP 高并发、抢票、秒杀 解决方案相关推荐

  1. java 12306高并发抢票_PHP 高并发、抢票、秒杀 解决方案

    对于抢票.秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比如有1 ...

  2. php京东秒杀,php,高并发_关于抢京东券高并发的问题?,php,高并发,秒杀 - phpStudy...

    关于抢京东券高并发的问题? 之前在一个微信公众号上做了一个抢京东券的功能, 50 张京东券,面额 50 . 100 不等,存在一张 card 表中,四个字段, id , number , money ...

  3. 一个高并发买票的实例

    2.一个高并发买票的实例:  马克-to-win:我 们现在回到春节高并发买票的问题.我们假设有一百万个人买一百张票,其中买票程序一百万个线程同时运行.不用改变mysql的缺省事务隔离级别.任何人在 ...

  4. api商品分享源码_SSM框架高并发和商品秒杀项目高并发秒杀API源码免费分享

    前言: 一个整合SSM框架的高并发和商品秒杀项目,学习目前较流行的Java框架组合实现高并发秒杀API 源码获取:关注头条号转发文章之后私信[秒杀]查看源码获取方式! 项目的来源 项目的来源于国内IT ...

  5. batocera中文整合包_分享一个整合 SSM 框架的高并发和商品秒杀项目

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 ...

  6. 91免费视频Redis+Lua解决高并发场景在线秒杀问题

    为何要使用Lua脚本解决商品超卖的问题呢? Redis在2.6版本后原生支持Lua脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行. 将复杂的或者多步的redis操作,写为一个脚本,一次 ...

  7. 高并发redis实现秒杀商品

    高并发redis实现秒杀 ps:直接在redis读取插入操作 只是插入的时候要加锁 怎么加锁 http://newmiracle.cn/?p=488 public function miaoshate ...

  8. 阿里、百度、美团都在用的‘’高并发秒杀系统‘’;抢红包、秒杀活动、微博热搜、12306抢票等高并发场景

    "秒杀活动"."抢红包"."微博热搜"."12306抢票"."共享单车拉新"等都是高并发的典型业务场 ...

  9. springboot 实现redis高并发抢票服务

    第一步:添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...

  10. 抢票成功率高的抢票软件

    抢票软件用了很多,这两年总结发现,还是 心到抢票 最靠谱,现在推荐给大家,希望大家以后也不用为抢票发愁了. 心到抢票三大优点: 1.抢票成功率高 2.有微信客服,可随时联系,方便解决问题 3.客服随时 ...

最新文章

  1. AOV网拓扑排序(c/c++)
  2. 粒子群算法tsp java_粒子群算法解决TSP问题汇总.doc
  3. 程序员必知的8大排序(四)-------归并排序,基数排序(java实现)
  4. 基于PCDN技术的无延时直播方案
  5. 关于excel表的生成
  6. 吴恩达《机器学习》--- Logistic分类
  7. Bootstrap Table配置
  8. soap协议有get方式
  9. 奇瑞新能源硬实力 全铝车身奇瑞大蚂蚁
  10. php中的列表属性,php类中的长属性列表 – 我可以缩短它吗?
  11. c++做的免费游戏狼人杀
  12. 微信公众号里面使用地图导航
  13. Windows Sever 2008 本地安全策略之登陆策略
  14. 获取IE浏览器版本号
  15. shell脚本-创建用户的4种思路
  16. 使用GAN+RL来进行关键词生成
  17. 如何为铁威马NAS设置固定IP?
  18. 基于蚁群算法的多配送中心的车辆调度问题的研究附Matlab代码
  19. 学习如何使用 Python 将你的照片变成卡通版本
  20. DDL, DML, DCL

热门文章

  1. 福州英华职业学院计算机专业在哪个校区,福州英华职业学院五年制大专地址在哪里...
  2. c0704 学生记录
  3. python3安装库报错ERROR: Exception: Traceback (most recent call last): File “A:\ProgramData\Anacon
  4. C语言中时间相关函数总结
  5. 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
  6. Jupyter Notebook又一懒人神器,拖拽生成Python代码!
  7. php 统计一个月工作日,php – 使用strtotime在一个月内获得第一个工作日
  8. 股票数据开源接口-陆股通持股
  9. 收藏夹整理——程序员笔试面试
  10. 网络安全之常用安全设备功能及作用