SpirngCloud-TCC事务
正在施工 敬请期待
分布式事务存在多种实现模式,详情可查看分布式事务解决方案一文。
本文讲述TCC分布式事务的原理及其实现。
TCC事务简介
T(Try) C(Comfirm) C(Cancel)
- Try阶段:对业务系统做检测及资源预留
- Confrim阶段:对业务系统做确认提交,当Try阶段成功后,执行Confirm阶段.
- Cancel阶段:当Try操作失败时,执行Cancel操作,释放Try阶段的预留资源。
幂等性
幂等(Idempotent)是一个数学与计算机学概念。在编程中,一个幂等操作指的是任意次执行后的影响均与一次执行的影响相同。
分布式调用幂等性(UUID处理)
在分布式系统中,一次操作返回失败不一定是操作失败,也有可能是网络传输原因。
Cousumer通常会重试,因此分布式的系统中,业务逻辑中需要实现幂等性。
- Create: 插入数据,需要插入前判断该数据是否存在,从而幂等。
- Read: 查询操作,天然幂等。
- Update/Delete:设计tb_uuid表,在事务开始前插入uuid,若该表之前存在uuid(唯一索引),则该事务之前成功执行过,不能执行。否则可执行。
其他方式实现幂等性(状态机)
给业务数据设置状态,通过业务数据状态判断是否需要重复执行。
TCC事务简易案例演示
业务场景介绍
在日常常见的电商系统中,存在一个支付订单的场景。
当用户支付订单后,我们需要做下面的步骤:
- 更改订单的状态为“已支付”
- 扣减商品库存
- 给会员增加积分
- 创建销售出库单通知仓库发货