9.9. 随机拒绝

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

随机拒绝

在我们现在的实现中,每次提交秒杀下单请求至少会产生一次 Redis 查询,那有没有办法将这个查询也省掉呢?答案就是接下来我们将要学习的电商秒杀系统中另外一个大杀器:随机拒绝。

1. 原理介绍

现在各大电商的秒杀系统都会需要用户提前预约,只有预约了的用户才有资格去参与秒杀。假设 iPhone X 在天猫首发时有 10000 部库存,而预约购买的人数是 100 万,也就是预约和库存比是 100:1,一百个用户里只有一个能抢到。

既然大部分人都不可能抢到,那我们完全可以在用户提交下单请求时生成一个 0 ~ 100 的随机数,如果这个数大等于 2 则直接告诉用户抢购的人太多请重试,这样能落到 Redis 的请求就只剩下了 2% 也就是 2 万人。

而生成随机数这个操作完全不涉及到其他服务,可以通过扩展 Web 服务器来线性地提高吞吐量,这就实现了用很低的成本消减掉 98% 的压力。

2. 使用中间件实现

接下来我们就要实现随机拒绝这个功能,基于我们目前的实现,代码进入到控制器时就已经完成了 Redis 查询,因此我们需要在进入控制器之前就完成随机拒绝这个行为,在 Laravel 中可以用中间件来实现。

现在先创建一个中...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 10

终生学习者
随机拒绝~让我有种蛋蛋的忧伤。我再也不相信秒杀了。
2 个点赞 | 1 个回复 | 分享 | 课程版本 5.7
xiaoxianlg
10 万的秒杀,需要 250 台机器?
1 个点赞 | 9 个回复 | 问答 | 课程版本 5.5
sunrain
250 台服务器能用 deployer 完成部署吗?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
18874127314
老师,有个疑问
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.7
JHWu
秒杀下单疑问
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
_杭城浪子
老师,load 和 with 到底有何区别
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
finley
关于秒杀活动和服务器配置的问题
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
huizai
老师,不光有超卖问题,还有超买问题。
0 个点赞 | 0 个回复 | 问答 | 课程版本 8.x