[商品秒杀设计] 多类型 -无限购 -的秒杀方案设计,求讨论

2019-06-04 16:37:16 +08:00
 BacGa
场景:商城上架 N 种商品(每种每天限量出售 500 件),每日 10:00 开始开放购买,没有任何限制(可以一次性购买任意种类的商品,任意库存内数量,极端情况为某用户直接下单 N*500,一次买空商城)。
假如存在开售瞬间产生高并发,只考虑订单接口处理速度,不考虑抢购页面静态资源的优化,应该怎么设计比较好?
1、何时锁定库存?
2、假如想同步等待下单结果,怎么设计?
主要是 防超卖,合理锁库存, 非异步设计的话 怎么优化呢?

感谢参与讨论的各位大佬!
3025 次点击
所在节点    Java
9 条回复
iugo
2019-06-04 16:44:34 +08:00
FIFO queue.
BacGa
2019-06-04 17:15:20 +08:00
人工顶下
moodasmood
2019-06-04 17:25:19 +08:00
点购买,进队列,服务端从队列取数据处理
index90
2019-06-04 17:26:38 +08:00
卖完后砍单 :doge
flxxy
2019-06-04 17:45:26 +08:00
超了就砍 (❀🐔
或者
购买库存使用缓存递减,购买库存与实际库存不需要相符,队列处理订单,未支付订单还可以返还成补货,同步等待结果可以单独起个服务,不去影响队列
npe
2019-06-04 17:54:14 +08:00
redis queue 够用了
mapper
2019-06-04 17:54:38 +08:00
初始化时从数据库读取库存数量存到 redis, 用户下单,利用 redis 的 decr 操作预减库存(decr 操作是原子性的,不会有多线程的安全问题), 然后执行商品的预秒杀操作,主要是入队列,这里可以直接返回结果给用户,消费者异步监听执行生成订单等操作, 然后前端使用轮询的方式查到最终的秒杀结果
BacGa
2019-06-05 08:59:36 +08:00
感谢各位大佬 我先试试看
ERRORatDAY1
2019-10-19 00:46:11 +08:00
大佬还是多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/570810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX