我是靠谱客的博主 稳重短靴,这篇文章主要介绍高并发场景的库存扣减方案方案一:Redis扣减库存&job回写发放库存到DB方案二:Redis批量预扣减库存方案三:Redis分片批量预扣减库存,现在分享给大家,希望可以做个参考。

方案一:Redis扣减库存&job回写发放库存到DB

流程图

  • 库存扣减流程图
    库存扣减流程图
  • 库存同步job流程图库存同步job流程图

优点

  • 简单易实现
  • 能支撑一定并发量

缺点

  • Redis宕机,存在库存丢失,可能导致库存超发
  • 高并发场景下,如某个商品大量售卖时,易产生库存key热点数据,不能横向扩展
  • 库存扣减失败,进行库存回滚操作,如果在库存回滚前读取了Redis的发放库存,那么会导致读取到的库存值大于实际发放库存,产生假超发问题

方案二:Redis批量预扣减库存

流程图

  • 库存扣减流程图
    库存扣减流程图

优点

  • Redis数据丢失时,损失部分库存,但不会导致超发
  • 缓解频繁回写DB已发放库存问题

缺点

  • 当redis预扣减库存数据丢失时,已发放数量的统计>实际已发放数量,损失部分库存
  • 预扣减库存key只有一个,高并发场景下扣减库存,容易造成Redis key热点问题。

方案三:Redis分片批量预扣减库存

流程图

  • 库存扣减流程图
    在这里插入图片描述

优点

  • 解决了Redis 热点key问题
  • 支持横向扩展,支持高并发场景的性能问题
  • Redis数据丢失时,损失部分库存,但不会导致超发

缺点

  • Redis数据丢失时,损失部分库存
  • 某用户扣减库存时,被路由到其中一个分片,该分片没有库存,但其他分片有库存时,该用户也会扣减库存失败。因此该方案适用于:库存数量较大、并发量高、不能超发的场景

最后

以上就是稳重短靴最近收集整理的关于高并发场景的库存扣减方案方案一:Redis扣减库存&job回写发放库存到DB方案二:Redis批量预扣减库存方案三:Redis分片批量预扣减库存的全部内容,更多相关高并发场景内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(99)

评论列表共有 0 条评论

立即
投稿
返回
顶部