分布式数据一致性(库存)

库存冻结现状

目前购物车添加商品、删除商品、修改商品数量、购物车过期库存解冻、成单后清空购物车,都涉及库存变化。

以添加商品为例,目前实现逻辑为:

1、调用库存系统扣减库存

2、购物车写库

3、第2步失败时,调用库存系统回滚库存。

以上均为线上同步调用。网络抖动时,产生的数据不一致系统无法自动恢复。

购物车与库存数据一致性

因购物车和库存系统分属不同的数据库,此处涉及分布式事务问题。

互联网系统出于系统性能的考虑,一般不追求实时一致性,而目标转向最终一致性。

最终一致性,可基于消息和处理状态实现。参考文章

以添加商品为例,实现逻辑仍与现有基本一致。一个事务可分解为3个动作:冻结库存、购物车写库、库存还原

每个动作都在本地库进行操作记录,离线定时对前后两个动作的操作记录进行核对,后一动作有缺失则进行重新触发。

最终一致性实现设计

概念定义:

1、事务(Transaction):购物车每次添加商品、删除商品、修改商品数量,称之为一个事务。

2、动作(Action):具体的数据写入操作,称之为一个动作。
以数据库为单元切分,不同数据库的操作必须切分为不同的动作。同一数据库的连续操作,可合并为一个动作。

3、链接(Link):前后相邻两个动作,需离线进行核对,称之为链接。先执行的动作简称为前动作,后执行的动作简称为后动作。 <

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值