美文网首页
电商架构实践-库存一致性实现方案

电商架构实践-库存一致性实现方案

作者: masterFan | 来源:发表于2020-03-14 00:09 被阅读0次

前言

最近在梳理后端业务场景时,发现商品库存扣减逻辑的实现存在一定的风险。所以,针对目前库存扣减实现方案做一些分析,然后再分享一些目前流行的解决方案。

当前实现方案

库存扣减-NM系统的实现方案.png

实现方式

只考虑更新数据库,缓存数据不考虑

执行步骤

1.订单服务发起扣减库存请求
2.库存服务执行库存减一 (使用DB CAS防止超卖)
3.商品详情中库存数据过期,重新获取库存数据

存在问题

1.出现库存数据不一致 (大概率)
2.并发性能低
3.库存数据应该缓存在库存服务中

适用场景

小系统(我们这种)

改良方案-Cache Aside

库存扣减-Cache Aside.png

实现方式

先更新数据库,再删除缓存

执行步骤

订单服务
1.发起扣减库存请求

库存服务
2.获取分布式锁
3.操作数据库,扣减库存
4.请求删除库存缓存
5.释放分布式锁

商品服务
6.获取最新的库存数据

存在问题

1.缓存删除失败,导致数据不一致 (小概率)
2.库存数据应该缓存在库存服务中

适用场景

并发小,可接受小概率数据不一致

疑问

为什么是删除缓存,不是更新缓存?
因为删除更简单,直接; 更新缓存有可能还涉及复杂的处理逻辑。

改良方案-Cache 双删

库存扣减-Cache双删.png

实现方式

先删除缓存==>操作数据库==>再删除缓存

执行步骤

订单服务
1.发起扣减库存请求

库存服务
2.获取分布式锁
3.删除库存缓存
4.操作数据库,扣减库存
5.删除库存缓存
6.释放分布式锁

商品服务
7.获取最新的库存数据

存在问题

1.高并行下,更新数据库未完成,同时有查询操作;这样在步骤4和步骤5间隔时间中就会出现数据不一致 (极小概率)

适用场景

高并发场景

改良方案-同步队列

库存扣减-内部队列.png

实现方式

在库存服务中实现一个同步队列,所有操作通过队列来实现串行执行

执行步骤

订单服务
1.发起扣减库存请求

库存服务
2.扣减请求放入队列中
3.从队列中获取一个操作
3.执行删除库存缓存
4.操作数据库,扣减库存
5.操作完成

商品服务
7.获取最新的库存数据 (等待库存更新完成后才能返回数据)

存在问题

实现复杂,需要考虑如何避免队列积压导致的读操作阻塞问题

适用场景

高并发场景

相关文章

  • 电商架构实践-库存一致性实现方案

    前言 最近在梳理后端业务场景时,发现商品库存扣减逻辑的实现存在一定的风险。所以,针对目前库存扣减实现方案做一些分析...

  • 干货分享(接口幂等性方案)

    本次分享石杉老师架构课中《大型电商系统之核心交易接口的一致性保障实践-采购流程的接口幂等性方案以及开发》,因为我是...

  • 1. 电商详情页系统架构介绍

    电商详情页架构方案大概分为两种,第一种小型电商,使用页面静态化的方案;第二种大型电商,架构较为复杂,使用异步多级缓...

  • 基于redis实现的扣减库存

    在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。 解决方案 使用m...

  • 电商库存系统怎么选择?

    电商库存管理一直是困扰着电商运营者的重要问题之一,也是电商网店不能回避的问题之一。如果电商库存管理没有做好,电商网...

  • 电商

    12.6刘润商学院日课感悟:电商 实体店电商面临的最大问题还是库存,库存是影响着资金的流动。 同样电商可以...

  • 电商库存

    一、销售层 销售层的库存决定是否可售卖,下单是否能成功。在秒杀时,活动 库存决定了是否可以秒杀成功;在预售时,预售...

  • 干货 | 电商项目扣减库存方案

    大家是不是在面试过程中经常被问到,你电商项目扣减库存时,到底是下单减库存呢?还是付款减库存? 那今天给大家出几种解...

  • 8.3-自营电商平台-购物车实现案例-Hash数据结构最佳实践—

    自营电商平台-购物车实现案例-Hash数据结构最佳实践 简介:自营电商平台-购物车实现案例-Hash数据结构最佳实...

  • 电商架构回顾之一V1.0版本

    前言 这篇文章主要是简单介绍一下,我刚进公司见到的电商V1.0架构。 部署架构图 电商架构剖析 简介 整个电商架构...

网友评论

      本文标题:电商架构实践-库存一致性实现方案

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