最近在设计一个秒杀系统。秒杀操作的执行逻辑是:
1 、从 redis 中读取当前秒杀商品的剩余库存(因为 redis 是单线程的,这里不会产生并发问题)
2 、如果库存大于 0,把秒杀请求存进 rabbitmq 消息队列,保证 rabbitmq 中的每个请求都会被成功消费(生成订单)。也就是如果有 100 个秒杀商品,那么消息队列中只会有 100 个秒杀请求。
3 、如果库存小于 0,直接返回秒杀结束
这样设计有没有问题?针对秒杀减库存下订单这个操作又没有更好的解决方案?
1 、从 redis 中读取当前秒杀商品的剩余库存(因为 redis 是单线程的,这里不会产生并发问题)
2 、如果库存大于 0,把秒杀请求存进 rabbitmq 消息队列,保证 rabbitmq 中的每个请求都会被成功消费(生成订单)。也就是如果有 100 个秒杀商品,那么消息队列中只会有 100 个秒杀请求。
3 、如果库存小于 0,直接返回秒杀结束
这样设计有没有问题?针对秒杀减库存下订单这个操作又没有更好的解决方案?