一、什么是分布式事务?
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
一个典型的例子就是跨行转账:
- 用户从银行A的账户向银行B的账户转账100元。
- 这个操作包含两个步骤:
- 从A账户扣减100元。
- 向B账户增加100元。
- 这两个步骤(子事务)分别发生在两个不同的数据库(或服务)中。它们必须作为一个整体来对待:要么都成功,要么都失败。绝对不允许出现A账户扣了钱,B账户没收到的情况。
二、分布式事务的挑战:CAP理论与BASE理论
要理解分布式事务的实现,必须先了解两个基础理论。
1. CAP理论
CAP理论指出,一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
- C - Consistency(一致性):所有节点在同一时间看到的数据是一样的。
- A - Availability(可用性):每个请求都能得到响应(不保证是最新数据)。
- P - Partition Tolerance(分区容错性):系统在遇到网络分区(节点之间无法通信)时,仍然能够继续工作。
在分布式系统中,P(分区容错性)是必须接受的,因为网络故障无法避免。因此,系统设计通常是在CP和AP之间做权衡。
- 追求强一致性(CP):会牺牲可用性(A)。例如,在数据同步时,系统可能暂时不可用。XA协议、Seata的AT模式等属于这类。
- 追求高可用性(AP):会牺牲强一致性(C),转而追求最终一致性。例如,允许数据在短时间内不一致,但最终会一致。TCC、Saga、消息队列等模式属于这类。
2. BASE理论
BASE理论是对CAP中一致性和可用性权衡的结果,是实践中的指导原则。它的核心思想是:即使无法做到强一致性,但每个系统都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
- BA - Basically Available(基