现在各大电商的秒杀系统都会需要用户提前预约,只有预约了的用户才有资格去参与秒杀。
假设 iPhone X 在天猫首发时有 10000 部库存,而预约购买的人数是 100 万,也就是预约和库存比是 100:1,一百个用户里只有一个能抢到。
既然大部分人都不可能抢到,那我们完全可以在用户提交下单请求时生成一个 0 ~ 100 的随机数,如果这个数大等于 2 则直接告诉用户抢购的人太多请重试,这样能落到 Redis 的请求就只剩下了 2% 也就是 2 万人。
而生成随机数这个操作完全不涉及到其他服务,可以通过扩展 Web 服务器来线性地提高吞吐量,这就实现了用很低的成本消减掉 98% 的压力。