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



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


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


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

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


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


实现思路:

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值