This topic created in 2534 days ago, the information mentioned may be changed or developed.
场景:商城上架 N 种商品(每种每天限量出售 500 件),每日 10:00 开始开放购买,没有任何限制(可以一次性购买任意种类的商品,任意库存内数量,极端情况为某用户直接下单 N*500,一次买空商城)。
假如存在开售瞬间产生高并发,只考虑订单接口处理速度,不考虑抢购页面静态资源的优化,应该怎么设计比较好?
1、何时锁定库存?
2、假如想同步等待下单结果,怎么设计?
主要是 防超卖,合理锁库存, 非异步设计的话 怎么优化呢?
感谢参与讨论的各位大佬!
Supplement 1 · Jun 5, 2019
---------------------------------------------------------------------------------------------
追加点问题 redis 做库存预扣,设计不限量购买,库存可能不是-1,怎么把-n 做成原子操作
9 replies • 2019-10-19 00:46:11 +08:00
 |
|
1
iugo Jun 4, 2019
FIFO queue.
|
 |
|
5
flxxy Jun 4, 2019
超了就砍 (❀🐔 或者 购买库存使用缓存递减,购买库存与实际库存不需要相符,队列处理订单,未支付订单还可以返还成补货,同步等待结果可以单独起个服务,不去影响队列
|
 |
|
6
npe Jun 4, 2019 via Android
redis queue 够用了
|
 |
|
7
mapper Jun 4, 2019
初始化时从数据库读取库存数量存到 redis, 用户下单,利用 redis 的 decr 操作预减库存(decr 操作是原子性的,不会有多线程的安全问题), 然后执行商品的预秒杀操作,主要是入队列,这里可以直接返回结果给用户,消费者异步监听执行生成订单等操作, 然后前端使用轮询的方式查到最终的秒杀结果
|
 |
|
8
BacGa Jun 5, 2019
感谢各位大佬 我先试试看
|