首页 > 学院 > 开发设计 > 正文

老火 给大家说两句自己简单实现秒杀思路

2019-11-11 06:30:55
字体:
来源:转载
供稿:网友

大家应该都知道,秒杀为啥  用  异步队列 这种形式来处理吧?哈哈 因为我们写的程序功能之前常理都是  用户请求到后台,后台操作数据库进行实现相应功能。

上边说道  用户  -->  后台服务器逻辑  -->数据库

那么这样的模式  如果用在秒杀上,  同时间 高并发来临,后台服务器逻辑操作数据库  一定是数据库 扛不住的时候,他已经就高潮了信不?

所以我们  如何让服务器不瘫痪的实现秒杀咧?

就要使用我们 的一种快、高效  避免数据库受到  高并发的请求处理;

实现思路:

1、在做一个  商品 开启秒杀活动前,将数据库中该商品的库存  同步到我们的内容缓冲中例如  redis 、memcache 中;

2、然后  同时在redis、memcache内容缓冲中  构建我们的消息队列A(其实也就是一块命名了的  资源空间) 用来存放 客户端的请求;

3、构建 处理 2 中的队列数据 将处理的结果 放入另一个 队列B中(例如 通过脚本 while()  sleep  实现队列A处理后  结果再放入队列B);

4、客户端点击秒杀后,js等客户端  启动隔时 请求,去队列B中找自己是不是被处理  以及处理的结果到底是个毛线 拿回来;

5、定时将 缓冲 中的商品库存等信息  再同步回数据库中

OK  几句话是否点通了你?

实现脚本图:

0.php   将数据库商品库存同步 缓冲中一份;

1.php   处理消息队列A 的入队(用户的请求);

2.php   while sleep脚本启动,出队A中的请求逐个处理  并将结果存入队列B;

3.php   处理客户端  定时请求读取结果  队列B中检索;

4.html   定时请求3.php;

5.php    定时将缓冲商品信息同步回数据库中

OK

以上,自己实现过一个例子,仅供参考


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表