下单时扣除产品数量mysql_关于电商库存扣除实现思路

一个单独的电商服务1.同步扣库存在订单生成的时候直接扣库存,这是最初等的方式扣库存,这种方式比较简单,但是也有一系列的问题:1.1、会造成有很多订单把产品库存扣除而并没有支付,这就需要有一个后台脚本,将一段时间内没有支付的订单的库存释放,把订单取消掉1.2、即时扣库存,并发差2.异步扣库存对于电商系统,譬如某狗东,会注意到,当订单支付成功后,会有一个出库过程,既然有这个过程,就有可能出库失败, 他...
摘要由CSDN通过智能技术生成

一个单独的电商服务

1.同步扣库存

在订单生成的时候直接扣库存,这是最初等的方式扣库存,这种方式比较简单,但是也有一系列的问题:

1.1、会造成有很多订单把产品库存扣除而并没有支付,这就需要有一个后台脚本,将一段时间内没有支付的订单的库存释放,把订单取消掉

1.2、即时扣库存,并发差

2.异步扣库存

对于电商系统,譬如某狗东,会注意到,当订单支付成功后,会有一个出库过程,既然有这个过程,就有可能出库失败, 他的流程是怎么样子的呢?(下面是讨论的结果,本人并不实际了解狗东的流程)

库存有两部分:一个缓存redis层,一个数据库mysql层

2.1当客服新增了5个库存,那么,缓存redis和数据库mysql层都需要增加5个库存,这个使用分布式事务的最终一致性来满足要么全加,要么全不加库存。

2.2当订单生成的时候,需要扣除库存,先扣除redis库存,如果扣除成功,则生成订单进行支付,注意,这个过程是不扣除mysql库存的。

2.3当redis库存扣干净了,那么这个产品就无法下单了,下单就会失败,就把外层的给挡住了。

2.4在2.2步扣除redis库存成功后,生成订单,进行支付,支付成功,返回我的订单中心, 会发现有一个出库过程

2.5出库过程是一个MQ异步解耦的任务队列,这个过程是扣除mysql产品库存,如果扣除数据库mysql产品库存成功,那么出库成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值