目录
回复内容:
首页 后端开发 php教程 并发问题 1000并发、3个奖品,如何保证秒杀稳定进行?

并发问题 1000并发、3个奖品,如何保证秒杀稳定进行?

Jun 06, 2016 pm 08:09 PM
mysql php 高并发

1000并发 3个奖品 保证秒杀稳定进行,并且中奖者和奖品数量不要出问题
这个问题怎么处理 ,mysql的 希望各位有经验的同学分享下经验以及解决方案,谢谢,在先等

回复内容:

1000并发 3个奖品 保证秒杀稳定进行,并且中奖者和奖品数量不要出问题
这个问题怎么处理 ,mysql的 希望各位有经验的同学分享下经验以及解决方案,谢谢,在先等

Redis 队列
Redis 可以应对高并发场景,是因为它的读写请求均是单线程机制,不存在并发问题。而且 Redis 是基于内存的,读写速度也比 MySQL 快得多

因为奖品只有三个,所以无论多少个请求过来,最多只能有三个请求可以正确获得奖品,所以可以将大部分的请求不做任何处理,直接返回秒杀失败,剩下很小的请求进入到下环节,此时并发很小,所以接下来的处理几乎可以不再考虑并发问题。
当然此方案仅因为奖品数很少,如果奖品本身很多,即使抛弃大部分的请求,系统也承受较大并发冲击,此时需要考虑其它方案。

请用缓存把奖品全部加入到里面。然后全部从缓存里秒,秒到了才更新数据库

看你描述你的秒杀场景感觉比我们的稍微简单一些,如果不考虑非常严谨的扩展性,只考虑当下,我感居然可以如下方式简单实现:

假设你优化下mysql或升级下硬件,1000并发全部查询mysql数据库是否还有库存,可以顶得住的话,那么只需要一个队列服务,把所有并发秒杀用户全部进入到队列逐条同步筛选出3个中奖用户,然后在生成订单的时候扣掉mysql里面的库存,并且响应给前端页面检测是否秒杀成功的进程即可,其他的997个用户全部响应给前端进程秒杀失败提醒

假设顶不住或者没钱升级?那就用redis之类的服务把1000个奖品信息存入缓存,秒杀成功生成订单的时候同步更新mysql和redis里面的库存数量

因为题主声明了只使用MySQL,我认为可以这样做:

1.将3个奖品放入一张表中;
2.到点后系统进入高并发状态,然后你们的奖品随机算法使用户中奖并删除记录;
3.检测表中是否还有数据;

也可以这样:

1.建立一张中奖专用计数表;
2.到点后系统进入高并发状态,然后你们的奖品随机算法使用户中奖并增加计数;

至于优化方案(暂时能想到的,希望大神补充):

1.存储引擎使用 MEMORY
2.可以在程序入口处设置一个过期时间,3个奖品的话,10秒钟足够了,过期后入口关闭或跳转;

最简单的方法是把1000并发用队列拉成线性的就行了,当某个请求发现库存没了,以后的所有请求全部返回秒杀失败。

才1000的并发/数据,为啥要用数据库。数据库的速度还是很慢很慢的。
服务器直接为每个请求保存一个时间戳,然后排序就好了。反正用户1-2秒之后获得结果也不会有什么特别的感觉。

将请求保存到队列,只取队列的前三个值,后面的全部返回已售完。

需要一个队列服务,把所有的并发秒杀用户,全部进入到队列逐条同步筛选出3个中奖用户,然后在生成订单的时候扣掉mysql里面的库存,并且响应给前端页面检测是否秒杀成功的进程即可,其他的997个用户全部响应给前端进程秒杀失败提醒

用 mysql 内存表。先用 hash user_id等方法随机丢掉一部分请求

然后直接 update 内存表,例:

``
update award set user_id=xxx where id=1 and user_id=0
``

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 Dec 09, 2024 am 11:42 AM

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

CakePHP 有用资源 CakePHP 有用资源 Sep 10, 2024 pm 05:27 PM

以下资源包含有关 CakePHP 的其他信息。请使用它们来获得更深入的知识。

See all articles