分布式事务简介,通过组内分享学习到的知识,并进行讨论。
主要内容
分布式事务简介
分布式事务是指跨越多个数据库或服务的一系列操作,这些数据库或服务可能分布在网络的不同节点上,它们共同组成一个完整的逻辑工作单元,必须满足事务的ACID特性(Atomicity, Consistency, Isolation, Durability),即原子性、一致性、隔离性和持久性。
原子性:分布式事务中的所有操作作为一个整体,要么全部成功,要么全部失败,不允许部分成功部分失败。
一致性:事务完成后,无论事务内部包含多少步骤,都会确保系统从一个有效状态转换到另一个有效状态,保持数据的完整性。
隔离性:即使多个分布式事务并发执行,每个事务的执行也不受其他事务的影响,如同在一个事务中一样。
持久性:一旦事务完成提交,其对数据库的修改将永久保存,即使发生系统故障也不会丢失。
分布式事务解决方案
在实际的分布式环境下,实现分布式事务面临的主要挑战是如何在多个参与事务的服务之间达成一致性的决策,尤其是在存在网络延迟、部分系统失效的情况下。常见的分布式事务解决方案和技术包括:
-
两阶段提交 (2PC, Two-Phase Commit):一种经典的分布式事务协议,通过协调者和参与者之间的两阶段交互来决定事务是否提交。
-
三阶段提交 (3PC, Three-Phase Commit):对2PC的改进,增加了一个预提交阶段以减少阻塞时间并提高容错能力。
-
补偿事务TCC (Try-Confirm-Cancel):尝试、确认、取消模型,通过业务代码显式控制事务的生命周期。
-
本地消息表:有一张存放本地消息的表。在执行业务的时候将业务的执行和将消息放入消息表中的操作放在同一个事务中。
-
事务消息:RocketMQ 支持事务消息,第一步先给 Broker 发送事务消息即半消息,半消息不是说一半消息,而是这个消息对消费者来说不可见,然后发送成功后发送方再执行本地事务。
-
基于分布式协调器的服务:如Seata提供了分布式事务的支持,采用不同的事务模型,简化了分布式事务的管理
Seata基本介绍
Seata 是一款开源的分布式事务解决方案,为用户提供了 AT、TCC、SAGA 和 XA 事务模式 事务协调者(TC):维护全局和分支事务的状态,驱动全局事务提交或回滚。 事务管理器(TM):定义全局事务的范围,开始全局事务、提交或回滚全局事务。 资源管理器(RM):管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
具体内容详见截图