简单题,主打一个出其不意。
正常来说,在接触秒杀系统的时候我们都会认为 Redis 预扣库存是一个天经地义的事情,所以没有怎么思考为什么要有这个步骤,遇到这个问题就有点不知道怎么回答了。
秒杀整体架构:如何设计一个秒杀系统? - 面试ICU (mianshi.icu)
Redis 预扣库存就相当于获取资格。
打一个比方来说,就好比以前房地产非常热门的时候,你要买房还得摇号、排队,先获取资格,而后拿到资格之后再去选房交款。
完整内容需要VIP会员权限
Redis 预扣库存相当于获得下单资格,而秒杀是否成功还是依赖于最终的下单锁锁库存是否成功。
预扣库存=取得资格
从整个架构上来说,Redis 这个步骤是一个可选的步骤。例如说在秒杀这个场景下,一种针对 Redis 崩溃的容错就是在 Redis 崩溃后,直接将秒杀请求丢到消息队列上,最终要是消费者锁定库存成功,才算是真的秒杀成功。
Redis崩溃容错