美文网首页
并发库存或额度扣减问题

并发库存或额度扣减问题

作者: 晚歌歌 | 来源:发表于2020-01-15 17:31 被阅读0次

数据库

并发还达不到秒杀级别的情况下可以直接使用数据库扣减,商业版阿里云MYSQL的性能事实上也不是不能看。
案例:分润系统资方额度扣减

update company set avail_amount = avail_amount - #{amount} where avail_amount - #{amount} >= 0 where id = #{id}

不管MYSQL隔离级别是读已提交或者可重复读,上述语句都能保证并发情况下不会出现额度超扣问题。
额度扣减是采用下单预扣模式,如果后续流程失败再恢复额度。同一资方update语句基本上每分钟峰值最多也就几百次,数据库没有压力。

REDIS

秒杀场景:
预先将数据库的库存同步到REDIS
DECRBY,判断返回的剩余库存>=0则表示下单成功,否则下单失败
利用定时等手段同步REDIS数据到数据库

并发不是特别高的应该利用CAS也是可以的

相关文章

  • 并发库存或额度扣减问题

    数据库 并发还达不到秒杀级别的情况下可以直接使用数据库扣减,商业版阿里云MYSQL的性能事实上也不是不能看。案例:...

  • 电商产品库存扣减逻辑

    解读库存扣减逻辑: 1.库存主要分 总库存 冻结库存 可用库存 2.库存在提交订单的时候增加冻结库存并扣减可用库存...

  • 幂等性-库存扣减

    如何在高并发场景下,库存扣减可能出现的数据不一致性问题。 示例: 如两个线程同时查询到库存num=5,其中一个线程...

  • 库存扣减

    此篇文章来自于京东大神开涛的微信公众号中的内容,感谢开涛大神,慢慢的干活,地址如下: https://mp.wei...

  • 分布式事务

    使用场景 例如: 电商下单 订单生成+扣减库存订单生成属于订单系统,扣减库存属于库存系统 db本地事务如何保证的?...

  • 高并发下库存扣减解决方案--分布式锁

    以下是个简单的库存扣减流程: 如果并发非常低的时候,基本就按这个流程走就行了。而这个设计,并发量稍大时,就会导致超...

  • go-zero基础组件-分布式锁RedisLock

    为什么需要分布式锁 用户下单 锁住uid,防止重复下单。 库存扣减 锁住库存,防止超卖。 余额扣减 锁住账户,防止...

  • 用 Go + Redis 实现分布式锁

    为什么需要分布式锁 用户下单 锁住 uid,防止重复下单。 库存扣减 锁住库存,防止超卖。 余额扣减 锁住账户,防...

  • 高并发场景下强一致预算/库存扣减方案

    场景描述 对于预算扣减/库存扣减类场景,我们需要根据业务对已有预算/库存做减法,拿发券的场景来举例: 需要满足不同...

  • RabbitMQ 消息顺序、消息幂等、消息重复、消息事务、集群

    1. 消息顺序 场景:比如下单操作,下单成功之后,会发布创建订单和扣减库存消息,但扣减库存消息执行会先于创建订单消...

网友评论

      本文标题:并发库存或额度扣减问题

      本文链接:https://www.haomeiwen.com/subject/zqwtzctx.html