[商品秒杀设计] 多类型 -无限购 -的秒杀方案设计,求讨论 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BacGa
V2EX    Java

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

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

    感谢参与讨论的各位大佬!
    第 1 条附言    2019-06-05 09:12:24 +08:00
    ---------------------------------------------------------------------------------------------
    追加点问题 redis 做库存预扣,设计不限量购买,库存可能不是-1,怎么把-n 做成原子操作
    9 条回复    2019-10-19 00:46:11 +08:00
    iugo
        1
    iugo  
       2019-06-04 16:44:34 +08:00
    FIFO queue.
    BacGa
        2
    BacGa  
    OP
       2019-06-04 17:15:20 +08:00
    人工顶下
    moodasmood
        3
    moodasmood  
       2019-06-04 17:25:19 +08:00
    点购买,进队列,服务端从队列取数据处理
    index90
        4
    index90  
       2019-06-04 17:26:38 +08:00
    卖完后砍单 :doge
    flxxy
        5
    flxxy  
       2019-06-04 17:45:26 +08:00
    超了就砍 (
    或者
    购买库存使用缓存递减,购买库存与实际库存不需要相符,队列处理订单,未支付订单还可以返还成补货,同步等待结果可以单独起个服务,不去影响队列
    npe
        6
    npe  
       2019-06-04 17:54:14 +08:00 via Android
    redis queue 够用了
    mapper
        7
    mapper  
       2019-06-04 17:54:38 +08:00
    初始化时从数据库读取库存数量存到 redis, 用户下单,利用 redis 的 decr 操作预减库存(decr 操作是原子性的,不会有多线程的安全问题), 然后执行商品的预秒杀操作,主要是入队列,这里可以直接返回结果给用户,消费者异步监听执行生成订单等操作, 然后前端使用轮询的方式查到最终的秒杀结果
    BacGa
        8
    BacGa  
    OP
       2019-06-05 08:59:36 +08:00
    感谢各位大佬 我先试试看
    ERRORatDAY1
        9
    ERRORatDAY1  
       2019-10-19 00:46:11 +08:00
    大佬还是多
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1635 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:25 PVG 00:25 LAX 09:25 JFK 12:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86