TCC 强一致性 实时 DEMO 下单(创建订单,扣除库存,增加积分,扣除余额)

伪代码

场景

用购买某种商品1件(原库存1000),增加20积分,扣除100元余额

设计说明

通过日志表来完成TCC。修改库存,余额表要先添加一条记录到他们的日志表里,表要记录TCC状态。
通过唯一业务Code去重,保证幂等。
没有抽象一个活动管理器来管理TCC。

服务

  1. 本地创建订单服务createOrder
  2. 本地插入订单Mapper层 insertOrder(orderCode)
  3. 本地其他服务
  4. 远程服务是否可以扣除库存ifReduceStock(orderCode,reduceNumber)
  5. 远程服务是否可以扣除余额ifReduceBalance(orderCode,sum)
  6. 远程服务Try扣除库存,锁住扣除库存tryReduceStock(orderCode,reduceNumber)
  7. 远程服务Try扣除余额,锁住扣除余额tryReduceBalance(orderCode,sum)
  8. 远程服务增加积分
  9. 远程服务Confirm扣除库存confirmReduceStock(orderCode,ReduceNumber)
  10. 远程服务Confirm扣除余额ConfirmReduceBalance(orderCode,sum)
  11. 远程服务Cancel扣除库存,取消占有资源cancelReduceStock(orderCode,ReduceNumber)
  12. 远程服务Cancel扣除余额,取消占有资源cancelReduceBalance(orderCode,sum)
  13. 远程服务增加积分
  14. 远程其他服务
    补充服务:扣除日志超过timeOut时间的记录状态设置为失效Cancel(在是否扣除ifReduce,Confirm操作中调用补充服务)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值