下单减库存;
支付减库存;
预扣库存:先扣库存,异步生成订单;
-
优化点:
库存存在哪里? 怎么保证高并发下,正确的扣库存,还能快速响应用户的请求?
-
把库存平均放到若干台服务器上:
在高并发情况下,不能保证高可用:万一有机器宕机,订单会少卖; 所以要对总订单做统一管理,即容错方案;
-
方案
服务在本地减库存后,还要在远程(Redis)统一减库存; 有了统一减库存的操作,可以根据负载情况,为每台机器分配“buffer库存”来防止有机器宕机的情况; buffer库存的设置:每台机器上设置了buffer库存,能保证不少卖,但buffer值太大会造成多余的请求。 虽然redis号称每秒10wQPS,在buffer库存不为零的情况下,每次请求依然会走一次IO;抢票对Redis的请求次数为:本地库存+buffer库存。