【学习】秒杀应该怎样设计

本文探讨了如何通过缓存减轻数据库压力,利用乐观锁管理库存,异步处理订单以提高性能。特别针对秒杀场景,提出了两种方案:秒杀成功扣库存并异步下单,以及页面显示处理中并异步发送消息。强调了补偿机制和重试策略的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统设计

使用缓存减轻数据库压力

缓存实现用户限流

乐观锁扣库存

异步生产订单

补偿机制

防止异步订单失败,加入定时任务重试机制重试下单;
或者下单逻辑 默认采用重试3次

方案一:秒杀成功扣库存,订单异步生成,订单生成失败,回滚库存。

方案二:页面发起秒杀,一直显示“处理中”,后端请求校验后,将 扣库存+下订单 操作发送mq消息,去异步处理,如果都成功,则写入redis,页面0.2s查询秒杀结果接口,如果存在有效订单(userId-goodsId),则秒杀成功。

***********持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值