分布式事务理论与实践

本文探讨了分布式事务产生的背景,介绍了2PC和TCC协议的理论基础,并详细阐述了基于消息的三种实现方案(本地消息表、binlog消息、事务消息)以及Seata的AT和TCC模式。强调了在实现过程中应注意的幂等性和顺序性问题,以及适用于不同场景的选择。
摘要由CSDN通过智能技术生成

一、产生背景

  1. 业务服务化拆分,原本一个服务能完成的业务操作现在需要跨多个服务;
  2. 分库分表,写操作可能跨多个数据库;

二、理论基础

2.1 2PC协议

角色说明

  • 事务管理器:负责分布式事务的发起与结束,以及失败重试等(事务发起方);
  • 资源管理器:本地事务涉及资源的管理(事务参与方);

协议过程

  • 阶段一: 事务管理器开启分布式事务,通知资源管理器准备资源;(Prepare)
  • 阶段二: 事务管理器判断资源准备情况,如果所有资源管理器都已经准备好资源,则通知资源管理进行提交;否则,进行回滚;(Commit/Rollback)

在这里插入图片描述

2.2 TCC协议

  TCC协议是服务化的两阶段提交协议,通过改造业务逻辑实现数据最终一致性,原先一个服务接口需要改成try/confirm/cancel三个接口,每个接口作用如下:

  • try:检测预留资源;
  • confirm:真正的业务操作提交;
  • cancel:预留资源释放;

  以减库存场景为例,一阶段try接口的逻辑是检查库存是否充足,如果库存不足则返回错误;如果库存充足,则预扣库存(冻结或锁定的意思);二阶段,confirm接口则真正的扣除库存,cancel接口则是释放预扣的库存。TCC协议是BASE理论很好的说明,保证扣减库存服务可用的前提下,通过增加库存的临时状态,实现库存数据的最终一致性。
在这里插入图片描述

三、实现方案 — 消息

  消息方案将上下游业务系统解耦,以异步的方式实现业务数据的最终一致性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值