四大分布式事务方案详解

云计算 分布式
分布式事务是指涉及多个参与者,通常是不同的计算机节点或服务的事务操作,因此需要跨多个节点执行事务操作。

分布式事务在分布式系统经常遇见,也是大厂经常考察的内容,下面我就重点详解四大主流分布式事务方案@mikechen

分布式事务

分布式事务是指涉及多个参与者,通常是不同的计算机节点或服务的事务操作,因此需要跨多个节点执行事务操作。

如下图所示:

图片图片

分布式事务需要确保所有相关操作要么全部成功执行,要么全部回滚,以维护数据的一致性和可靠性。

分布式事务解决方案

常见的分布式事务解决方案,主要包含有以下四种:

两阶段提交协议

两阶段提交协议,Two-Phase Commit,简称是2PC,该协议包括:准备和提交两个阶段。

如下图所示:

图片图片

1.准备阶段

协调者向所有参与者发送准备请求,参与者执行事务准备,并向协调者发送准备就绪的通知。

2.提交阶段

如果所有参与者都准备就绪,则协调者向所有参与者发送提交请求,参与者执行事务提交。

如果所有参与者都成功提交了事务,则事务成功完成。

否则,如果任何一个参与者失败或者无法提交,则所有参与者都会被要求回滚(Rollback)事务,以保持一致性。

2PC的优点是简单易懂,并且在理想情况下能够保证分布式系统中事务的原子性和一致性。

两阶段有如下几个缺点:

1.阻塞问题

在2PC的准备阶段,协调者需要等待所有参与者的响应,这可能会导致整个系统的阻塞。

2.单点故障

在2PC中,协调者是一个单点,它负责协调所有参与者的操作。

如果协调者发生故障,那么整个事务可能会无法完成,即使参与者的大部分已经准备好了,这种单点故障会影响系统的可用性和可靠性。

3.数据不一致性

2PC无法处理所有故障情况,例如:协调者和参与者之间的网络分区或者通信失败。

在这种情况下,可能会出现数据不一致性,一些参与者已经提交了事务,而另一些参与者却未收到提交指令,导致系统状态混乱。

三阶段提交协议

三阶段提交协议,Three-phase commit, 简称是3PC,3PC是2PC的改进版。

如下图所示:

图片图片

3PC的主要思想是引入一个【预提交阶段】,以减轻2PC中的阻塞问题,同时保持原子性和一致性。

3PC,主要分为三个阶段:

1.预提交阶段

协调者询问参与者是否可以提交事务,并等待它们的响应,如果所有参与者都同意,则进入下一阶段。

2.提交阶段

协调者向所有参与者发送提交请求,要求它们提交事务,如果任何参与者无法提交,则执行回滚。

3.确认阶段

协调者向所有参与者发送确认消息,告知它们事务已经提交,这一阶段用于解决2PC中的阻塞问题。

3PC相较于2PC的优点是在第一阶段引入了一个“询问”阶段,避免了2PC的直接准备阶段可能出现的长时间阻塞问题。

两阶段与三阶段对比,如下图所示:

图片图片

补偿事务

TCC(Try-Confirm-Cancel)是一种补偿性事务处理模式,用于实现分布式系统中的一致性操作。

如下图所示:

图片图片

TCC模式通过三个阶段的操作来确保事务的一致性:尝试(Try)、确认(Confirm)和取消(Cancel)。

1.尝试阶段(Try)

在尝试阶段,系统会尝试执行事务操作的所有必要检查和准备工作,以确保事务能够成功执行。

这包括检查资源的可用性、锁定所需资源等,如果所有的检查都通过,系统会记录下所有的尝试操作,但并不会实际执行事务。

2.确认阶段(Confirm)

在确认阶段,系统会执行事务操作,并且确认之前所做的尝试操作。

如果事务操作成功执行,系统将确认并提交事务,在这个阶段,系统会持久化事务的结果,确保事务的最终执行。

3.取消阶段(Cancel)

如果在尝试阶段或者确认阶段发生了错误或者异常情况,系统将进入取消阶段。

在这个阶段,系统会执行逆向操作,取消之前尝试阶段所做的操作,这样可以确保系统的状态回滚到事务开始之前的状态,以维持数据的一致性。

TCC模式允许开发人员在每个阶段都定义自己的业务逻辑和补偿操作,以适应不同的业务需求。

但是,TCC模式要求开发人员在每个阶段都显式定义业务逻辑和补偿操作,这增加了系统的复杂性和开发成本,需要设计和维护每个阶段的逻辑,并确保它们之间的一致性。

最终一致性

最终一致性是分布式系统中的一种一致性模型,它允许数据副本在一段时间内的状态之间存在不一致,但最终将会达到一致的状态。

如下图所示:

图片图片

在最终一致性模型中,节点之间的数据同步通常是通过消息传递来实现的。

当一个节点的数据发生变化时,它会通过异步方式将消息发送给其他节点,由于消息传递是异步的,因此节点之间的数据同步可能会有一定的延迟。

因此,最终一致性模型允许节点之间的数据副本,在一段时间内存在不一致,但最终会收敛到一致的状态。

责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2022-07-03 14:03:57

分布式Seata

2021-04-27 07:52:18

分布式事务系统

2023-11-06 13:15:32

分布式事务Seata

2019-10-10 09:16:34

Zookeeper架构分布式

2022-06-13 10:42:21

分布式事务数据库

2013-05-16 09:31:22

虚拟交换机分布式虚拟机

2022-01-25 11:38:13

分布式数据中心数据中心

2019-11-04 08:38:45

分布式事务主流TCC

2022-07-10 20:24:48

Seata分布式事务

2024-01-04 23:55:53

2024-04-19 16:12:23

2022-06-27 08:21:05

Seata分布式事务微服务

2020-05-28 09:35:05

分布式事务方案

2023-09-14 15:44:46

分布式事务数据存储

2022-06-21 08:27:22

Seata分布式事务

2017-07-26 15:08:05

大数据分布式事务

2023-03-05 18:23:38

分布式ID节点

2023-01-06 09:19:12

Seata分布式事务

2024-03-26 12:08:53

分布式事务存储

2009-06-19 15:28:31

JDBC分布式事务
点赞
收藏

51CTO技术栈公众号