随着系统越来越大,不断的模块化和SOA化,你的系统可能被分散于不同的机器上,这时候,你原先的单机本地事务可能已经无法满足你的需求,你可能要跨系统跨资源的去使用事务。这就是分布式事务。
事务有四个特性:
- 原子性
- 一致性
- 隔离性
- 持久性
具体就不多介绍了,相信大家都能明白ACID特性的基本含义。
事务模型
而一个具体的事务需要涉及到的模型(无论哪种模型)一般由下面几部分组成:
- AP 应用程序
- RM 资源管理器
- TM
事务管理器
这里的资源管理器一般指数据库资源,而事务管理器,大多是由数据库厂商提供。
那么其实在分布式事务中,也应该符合以上事务的特性和模型,只是资源管理器(RM)变得多了起来.
分布式事务介绍
分布式事务最大的问题在于如何确定资源的状态,以及保证一致性,原子性
。
一般来说分布事务由
- 原子提交协议
- 协调器
- 参与者
- 事务恢复器
- 死锁检测器
五部分组成。
原子提交协议
指的是如何保证原子提交,一般分为单阶段原子提交协议
,两阶段原子提交协议
,三阶段原子提交协议
。
对于单阶段原子提交协议
来说,根本没有办法保证分布式事务的原子性,所以不适用于分布式事务中。
两阶段原子提交协议则
是
各种分布式事务实现中使用最广泛的一种原子提交协议:它主要是交事务提交的过程分为二阶段,投票和最终提交。事务由协调者发起一个事务,参与者加入到事务
中后,第一阶段时候,所有的参与者准备资源,并将资源hold住,协调者询问所有的参与者是否可以提交?所有的参与者向协调者响应结果YES/NO,当所
有的协调者都响应YES的时候,协调者才会发起第二阶段,向所有的参与者通知提交事务,当所有的参与者都提交确认会会再通知协调者。至此事务处理完毕。
三阶段提交协议
由于协调者与参与者多次进行沟通所以代价很大,一般不会使用。但是它能缩小事务处理“不确定”状态的延迟时间。
所谓“不确定”状态就是指当参与者向协调者反馈可以提交的时候,长时间没有收到协调者的通知,这时候参与者没有办法确定事务最终需要如何处理,所以状态为不确定状态。
协调者,参与者一般通过如下动作来进行通信:
- join:由协调者提供,用来注册新的参与者
- canCommit:协调者询问参与者是否能够提交
- doCommit :协调者通知参与者提交事务
- doAbort:协调者通知参与者放弃事务
- haveCommit:参与者向协调者确认已经提交事务
- getDecision:当处于“不确定”状态时,参与者用来询问协调者事务的目前状态。
对于haveCommit特别说明一下,是当第一阶段的时候,协调者发现长时间参与者没有向协调者反馈事务状态,则协调者会主动调用该接口事务的情况,如果仍然无响应,则会通知所有的参与者放弃该事务。
任何事情都会有意外产生,特别是对于跨系统间的通信更容易产生问题,比如网络异常,机器down机,这个时候就需要事务恢复器来作相应的处理。
对于处于第一阶段的事务,
如果参与者发生意外,则协调者会通知所有的参与者进行事务放弃,但是如果协调者出生故障时,就必须要能
够就行事务恢复,所以协调者必须在开始事务的时候,产生唯一的事务ID,并且对事务进行持久化,在协调者恢复的时候,参够让人参与者继续进行事务。
而对于第二阶段出现的故障,
由于第一阶段进行了资源的个决,则事务认为是必然能成功的,这个事候,如果这个时候参与者发生故障,则协调者需要一套重试机制,让参与者在恢复过来后,能够将事务进行完成或者人工介入。
关于死锁检测器这里就不多描述了,以后有机会再描述。
分享到:
相关推荐
内容概要:该文档详尽介绍了分布式事务的概念、背景、实现原理和具体方案,帮助开发者理解和实施有效的分布式事务处理方法。从易到难逐步介绍,确保新手也能跟上进度。文中不仅讲述了为什么需要分布式事务,还深入...
两阶段提交协议是一个经典的分布式事务处理协议,用于确保事务在多个节点上要么全部提交,要么全部回滚。 基于MVCC(多版本并发控制)的分布式事务能够允许多个事务并发执行而不会相互干扰。Paxos协议是一个解决...
10. **分布式事务**:在分布式系统中,事务的处理变得复杂,ACID(原子性、一致性、隔离性和持久性)属性的保证需要精心设计。例如,2PC(两阶段提交)和TCC(尝试、确认、补偿)等事务处理模型。 11. **微服务架构...
#### 十一、基于MVCC的分布式事务 - **MVCC简介**: 多版本并发控制,允许多个事务并发执行。 - **分布式MVCC**: 在分布式环境下实现MVCC的方法。 #### 十二、Paxos协议 - **简介**: 一种解决分布式一致性问题的协议...
Hadoop分布式文件系统(HDFS)是Hadoop核心组件之一,它的设计目标是为了在普通的硬件上提供高吞吐量的数据访问,适用于大规模数据集的存储和处理。HDFS作为一个高度容错的系统,旨在提供高可靠性且易于扩展的分布式...
它提供了容器管理的持久化、事务处理、安全性和多线程等特性,极大地简化了企业级应用的开发。 4. **RMI(Remote Method Invocation)**:RMI协议允许Java对象在不同Java虚拟机之间进行通信,实现远程方法调用,是...
8. **分布式事务处理**:讨论2PC(两阶段提交)、3PC(三阶段提交)等分布式事务模型,以及在ACID(原子性、一致性、隔离性、持久性)属性下的挑战和解决方案。 9. **微服务架构**:简述微服务思想,如何将大型应用...
3. **分布式事务管理**:SUNDDB支持分布式事务处理,通过两阶段提交或三阶段提交协议保证事务的一致性和完整性。 4. **复制与容灾**:为了提高数据的安全性和系统的可用性,SUNDDB提供了多种复制模式,如主从复制、...
EJB,全称为Enterprise JavaBeans,是Java平台上的一个核心组件,主要用于构建分布式、事务处理和安全的企业级应用程序。它提供了组件模型,使得开发者可以创建可重用的业务逻辑,这些逻辑可以在Java应用服务器中...
在Map阶段,P-EFIM算法首先计算所有项集的事务加权效用值,然后对这些项集进行排序。排序后的项集被重新编号,同时剔除低效用的项,以提高数据集的利用率。这里的关键是S型分配策略,它能确保子任务均匀地分配到各个...
8. **分布式数据库**:随着云计算的发展,分布式数据库成为热门话题,涉及数据分区、复制、分布式事务处理等。 9. **NoSQL数据库**:非关系型数据库如键值存储、文档型、列族和图形数据库,适用于大数据和高并发...
7. RECO(恢复):处理分布式事务的恢复问题,确保跨多个数据库节点的一致性。 8. LCKn(封锁):处理并发控制,实现事务的隔离级别。 9. Dnnn(调度进程)和Snnn(服务器进程):根据系统需求动态创建,以处理...
10. **分布式数据库**:简述分布式数据库系统的概念,如数据复制、分区和分布式事务处理。 11. **NoSQL数据库**:对比传统SQL数据库,介绍NoSQL数据库(如MongoDB、Cassandra)的特点和应用场景。 12. **数据库...
这种架构解决了传统软件架构中部署成本高、风险大、频繁发布困难等问题,同时也引入了分布式系统的复杂性、部署测试监控成本以及分布式事务处理的挑战。微服务技术栈通常包括Docker容器化、API Gateway、服务发现、...
Adam Lu(刘亚壮),高级软件架构师,Java编程专家,开源分布式消息引擎Mysum发起者、首席架构师及开发者,Android开源消息组件Android-MQ独立作者,国内知名开源分布式数据库中间件Mycat核心架构师、开发者,精通Java...
最后,笔记可能也会简述Oracle的分布式数据库系统特性,如分布式事务处理、全局表和分布式查询,这对于大型企业级应用尤其重要。 总的来说,"Oracle笔记 要的赶快 放送一天"这份资料是全面学习Oracle数据库的一个...
9. 分布式数据库:探讨分布式数据库的基本概念,如数据分区、复制和分布式事务处理。 10. 大数据与云存储:简述大数据处理技术(如Hadoop、Spark)和云数据库服务,以及它们对传统数据库的挑战和补充。 通过...
10. **分布式数据库**:简述了分布式数据库的原理,包括数据复制、分片和分布式事务处理。 11. **Eclipse使用简介**:这部分可能介绍了Eclipse IDE的安装、配置,创建数据库连接,以及使用Eclipse进行SQL脚本编写和...
- 事务处理:探讨在复杂业务场景下如何运用事务,包括分布式事务和两阶段提交。 通过这些章节的学习,初学者将能够建立起对MySQL数据库的全面理解,从基础操作到高级特性的掌握,为后续的数据库管理和开发工作打下...