事务有ACID的特性,即原子性、一致性、隔离性、持久性。
TCC编程:Try、Confirm和Cancel,分表代表尝试锁定资源、全部执行成功确认提交和取消。
分布式事务,是指多个任务分发到不同服务器执行,要么全部成功,要么全部失败。目前有几种方案,其中用的多且简单的就是补偿机制,以及2阶段提交、3阶段提交、4阶段提交。
补偿机制:以订单扣库存为例,若订单插入成功库存量扣失败,则mq定时补偿删除订单。即任何一个事务是可逆或可回滚的。
2阶段提交:请求阶段(协调者请求参与者决策是否可提交事务)、提交阶段(根据所有参与者的决策结果最终确认提交还是取消)。存在问题:1同步阻塞问题。执行过程中,所有参与节点都是事务阻塞型的。2单点故障。由于协调者的重要性,一旦协调者发生故障。3数据不一致。在二阶段提交的阶段二中,当协调者向参与者发送commit请求之后,发生了局部网络异常或者在发送commit请求过程中协调者发生了故障。4当协调者出错,同时参与者也出错时,两阶段无法保证事务执行的完整性。
1)CanCommit阶段
3PC的CanCommit阶段其实和2PC的准备阶段很像。
协调者向参与者发送commit请求,参与者如果可以提交就返回Yes响应,否则返回No响应。
2)PreCommit阶段
Coordinator根据Cohort的反应情况来决定是否可以继续事务的PreCommit操作。
根据响应情况,有以下两种可能。
A.假如Coordinator从所有的Cohort获得的反馈都是Yes响应,那么就会进行事务的预执行:
发送预提交请求。Coordinator向Cohort发送PreCommit请求,并进入Prepared阶段。
事务预提交。Cohort接收到PreCommit请求后,会执行事务操作,并将undo和redo信息记录到事务日志中。
响应反馈。如果Cohort成功的执行了事务操作,则返回ACK响应,同时开始等待最终指令。
B.假如有任何一个Cohort向Coordinator发送了No响应,或者等待超时之后,Coordinator都没有接到Cohort的响应,那么就中断事务:
发送中断请求。Coordinator向所有Cohort发送abort请求。
中断事务。Cohort收到来自Coordinator的abort请求之后(或超时之后,仍未收到Cohort的请求),执行事务的中断。
3)DoCommit阶段
该阶段进行真正的事务提交,也可以分为以下两种情况:
执行提交
A.发送提交请求。Coordinator接收到Cohort发送的ACK响应,那么他将从预提交状态进入到提交状态。并向所有Cohort发送doCommit请求。
B.事务提交。Cohort接收到doCommit请求之后,执行正式的事务提交。并在完成事务提交之后释放所有事务资源。
C.响应反馈。事务提交完之后,向Coordinator发送ACK响应。
D.完成事务。Coordinator接收到所有Cohort的ACK响应之后,完成事务。
中断事务
Coordinator没有接收到Cohort发送的ACK响应(可能是接受者发送的不是ACK响应,也可能响应超时),那么就会执行中断事务。
三阶段提交协议和两阶段提交协议的不同:
对于协调者(Coordinator)和参与者(Cohort)都设置了超时机制(在2PC中,只有协调者拥有超时机制,即如果在一定时间内没有收到cohort的消息则默认失败)。
在2PC的准备阶段和提交阶段之间,插入预提交阶段,使3PC拥有CanCommit、PreCommit、DoCommit三个阶段。
PreCommit是一个缓冲,保证了在最后提交阶段之前各参与节点的状态是一致的。
消息事务(2阶段提交)+最终一致性:即本地事务和发消息放到一个分布式事务中,比如系统向消息系统发预备消息,发送成功才执行本地事务,执行成功才发送提交消息给中间件。若本地事务执行失败,则通过消息中间件回调接口,不断检查本地事务执行状态。若本地执行成功发送提交失败,其实通过中间件回调接口就检测成功就可以自动提交了。
消息系统(eBay模式):核心是保证服务接口的幂等性。即同一个接口重复调用也不会出问题,保证数据的唯一性。
相关推荐
#### 一、分布式事务概念及重要性 在现代软件架构中,随着业务复杂度的提升以及系统规模的扩大,单一应用已经很难满足实际需求,分布式系统应运而生。分布式系统由多个独立运行的服务组成,这些服务之间通过网络...
1. **分布式事务概念**:在分布式系统中,事务处理跨越多个节点,必须确保所有操作要么全部成功,要么全部失败,这就需要分布式事务的支持。它保证了数据的一致性和完整性,避免了部分成功导致的数据不一致问题。 2...
1. Early Beginnings:事务概念的提出可以追溯到20世纪60年代,数据库管理系统的出现。事务的ACID特性是指原子性、 一致性、隔离性和持久性。 2. 2PC(Two-Phase Commit):是分布式事务中最常用的实现技术之一。它...
以上是分布式事务的基本概念和相关技术点,通过分析提供的源代码,可以更深入地理解这些原理在实际开发中的应用。对于初学者,建议先理解基本理论,然后对照代码逐步学习,以提升对分布式事务的掌握。如果你在学习...
本文将深入探讨分布式事务的概念、原理以及在实际应用中的解决方案。 分布式事务是指跨越多个数据库或资源管理器的单个逻辑操作,其目的是保持ACID(原子性、一致性、隔离性和持久性)特性,以确保业务流程的正确...
#### 一、分布式事务基本概念 在理解分布式事务之前,我们首先需要了解数据库事务的基本属性,即ACID特性。 - **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败。如果其中任何一部分失败,则...
分布式事务是为了解决分布式系统中跨越多个节点的操作,要求这些操作要么全部成功要么全部失败的一种事务机制。它是为了保证在不同节点上的数据一致性而产生的概念。分布式事务广泛应用于微服务架构、数据库分库分表...
最全分布式事务视频课程详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 视频课程大纲: 1.事务基本概念讲解(本地、分布式) 2.分布式事务理论(CAP、BASE) 3.分布式事务解决方案之2PC(xa、...
LCN(Local Capable Notifier...通过学习这个资源包,你将能够理解分布式事务的基本概念,掌握LCN的使用方法,并具备在实际项目中应用分布式事务的能力。无论是理论学习还是实践经验,这都是一份非常有价值的学习资料。
1. **分布式事务理论基础**:分布式事务的基本概念源于ACID(原子性、一致性、隔离性、持久性)原则,它要求分布式系统中的事务操作如同单机事务一样可靠。在分布式环境中,由于网络延迟、节点故障等问题,实现ACID...
在当今的互联网环境下,分布式系统已成为软件架构的主要形式,而分布式事务作为保证系统一致性的核心问题,其重要性愈发凸显。分布式事务是指在分布式系统中,跨越多个节点的事务,这些节点可能位于不同的服务器上,...
本课程将深入探讨分布式事务管理框架Seata的核心概念和实际应用。学员将了解Seata在微服务架构中的作用、原理及实践,包括分布式事务、一致性、可靠性等方面的重要知识点。 视频大小:16.6G
文中提到的学习资料可能包括但不限于各种技术书籍、在线教程、论文等,旨在帮助读者深入理解分布式事务的相关概念和技术实现。 通过上述知识点的详细解读,我们可以看到分布式事务不仅涉及事务的基本属性,还包含了...
在IT行业中,微服务架构是一种将单一应用程序分解为一组小型、独立的...通过“微服务架构的分布式事务解决方案.txt”这份文档,读者可以深入理解这一领域的核心概念和技术,从而在实际项目中有效应对分布式系统的挑战。
分布式事务处理的概念 事务是工作的一个单一逻辑单元,其特性在于“要么全部成功,要么全部失败”。这种特性确保了数据的一致性和完整性。在分布式环境中,这意味着事务的参与者、服务器和支持事务的资源都可能...
在理解分布式事务专题之前,首先需要明确事务的基本概念。事务是一种机制,它保证了数据库操作的原子性、一致性、隔离性和持久性,也就是我们熟知的ACID属性。原子性(Atomicity)意味着事务中的所有操作要么全部...
在.NET开发环境中,C#语言提供了强大的工具和框架来处理分布式事务,这使得开发者能够构建高效、可扩展的多数据库应用。本主题将深入探讨C#中的分布式事务处理类及事件使用,帮助你理解如何在分布式系统中实现一致性...