`
javatgo
  • 浏览: 1169792 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

分布式事务简述

 
阅读更多

随着系统越来越大,不断的模块化和SOA化,你的系统可能被分散于不同的机器上,这时候,你原先的单机本地事务可能已经无法满足你的需求,你可能要跨系统跨资源的去使用事务。这就是分布式事务。
  事务有四个特性:

  1.    原子性
  2.    一致性
  3.    隔离性
  4.    持久性

  具体就不多介绍了,相信大家都能明白ACID特性的基本含义。

事务模型

而一个具体的事务需要涉及到的模型(无论哪种模型)一般由下面几部分组成:

  1. AP 应用程序
  2. RM 资源管理器
  3. TM 事务管理器

这里的资源管理器一般指数据库资源,而事务管理器,大多是由数据库厂商提供。
那么其实在分布式事务中,也应该符合以上事务的特性和模型,只是资源管理器(RM)变得多了起来.

分布式事务介绍

分布式事务最大的问题在于如何确定资源的状态,以及保证一致性,原子性
一般来说分布事务由

  1. 原子提交协议 
  2. 协调器
  3. 参与者
  4. 事务恢复器
  5. 死锁检测器

五部分组成。

原子提交协议 指的是如何保证原子提交,一般分为单阶段原子提交协议两阶段原子提交协议三阶段原子提交协议

对于单阶段原子提交协议 来说,根本没有办法保证分布式事务的原子性,所以不适用于分布式事务中。

两阶段原子提交协议则 是 各种分布式事务实现中使用最广泛的一种原子提交协议:它主要是交事务提交的过程分为二阶段,投票和最终提交。事务由协调者发起一个事务,参与者加入到事务 中后,第一阶段时候,所有的参与者准备资源,并将资源hold住,协调者询问所有的参与者是否可以提交?所有的参与者向协调者响应结果YES/NO,当所 有的协调者都响应YES的时候,协调者才会发起第二阶段,向所有的参与者通知提交事务,当所有的参与者都提交确认会会再通知协调者。至此事务处理完毕。

三阶段提交协议 由于协调者与参与者多次进行沟通所以代价很大,一般不会使用。但是它能缩小事务处理“不确定”状态的延迟时间。

所谓“不确定”状态就是指当参与者向协调者反馈可以提交的时候,长时间没有收到协调者的通知,这时候参与者没有办法确定事务最终需要如何处理,所以状态为不确定状态。

协调者,参与者一般通过如下动作来进行通信:

  1. join:由协调者提供,用来注册新的参与者
  2. canCommit:协调者询问参与者是否能够提交
  3. doCommit :协调者通知参与者提交事务
  4. doAbort:协调者通知参与者放弃事务
  5. haveCommit:参与者向协调者确认已经提交事务
  6. getDecision:当处于“不确定”状态时,参与者用来询问协调者事务的目前状态。

对于haveCommit特别说明一下,是当第一阶段的时候,协调者发现长时间参与者没有向协调者反馈事务状态,则协调者会主动调用该接口事务的情况,如果仍然无响应,则会通知所有的参与者放弃该事务。

任何事情都会有意外产生,特别是对于跨系统间的通信更容易产生问题,比如网络异常,机器down机,这个时候就需要事务恢复器来作相应的处理。

对于处于第一阶段的事务,
如果参与者发生意外,则协调者会通知所有的参与者进行事务放弃,但是如果协调者出生故障时,就必须要能 够就行事务恢复,所以协调者必须在开始事务的时候,产生唯一的事务ID,并且对事务进行持久化,在协调者恢复的时候,参够让人参与者继续进行事务。

而对于第二阶段出现的故障,
由于第一阶段进行了资源的个决,则事务认为是必然能成功的,这个事候,如果这个时候参与者发生故障,则协调者需要一套重试机制,让参与者在恢复过来后,能够将事务进行完成或者人工介入。

关于死锁检测器这里就不多描述了,以后有机会再描述。

1
3
分享到:
评论

相关推荐

    分布式事务面试题详解:解决方案与应用场景

    内容概要:该文档详尽介绍了分布式事务的概念、背景、实现原理和具体方案,帮助开发者理解和实施有效的分布式事务处理方法。从易到难逐步介绍,确保新手也能跟上进度。文中不仅讲述了为什么需要分布式事务,还深入...

    分布式系统原理介绍

    两阶段提交协议是一个经典的分布式事务处理协议,用于确保事务在多个节点上要么全部提交,要么全部回滚。 基于MVCC(多版本并发控制)的分布式事务能够允许多个事务并发执行而不会相互干扰。Paxos协议是一个解决...

    分布式系统概述

    10. **分布式事务**:在分布式系统中,事务的处理变得复杂,ACID(原子性、一致性、隔离性和持久性)属性的保证需要精心设计。例如,2PC(两阶段提交)和TCC(尝试、确认、补偿)等事务处理模型。 11. **微服务架构...

    分布式系统原理 刘杰

    #### 十一、基于MVCC的分布式事务 - **MVCC简介**: 多版本并发控制,允许多个事务并发执行。 - **分布式MVCC**: 在分布式环境下实现MVCC的方法。 #### 十二、Paxos协议 - **简介**: 一种解决分布式一致性问题的协议...

    分布式文件系统HDFS原理与操作

    Hadoop分布式文件系统(HDFS)是Hadoop核心组件之一,它的设计目标是为了在普通的硬件上提供高吞吐量的数据访问,适用于大规模数据集的存储和处理。HDFS作为一个高度容错的系统,旨在提供高可靠性且易于扩展的分布式...

    简述J2EE的核心技术

    它提供了容器管理的持久化、事务处理、安全性和多线程等特性,极大地简化了企业级应用的开发。 4. **RMI(Remote Method Invocation)**:RMI协议允许Java对象在不同Java虚拟机之间进行通信,实现远程方法调用,是...

    s2_distributedsystem_

    8. **分布式事务处理**:讨论2PC(两阶段提交)、3PC(三阶段提交)等分布式事务模型,以及在ACID(原子性、一致性、隔离性、持久性)属性下的挑战和解决方案。 9. **微服务架构**:简述微服务思想,如何将大型应用...

    sundb产品介绍,体系结构

    3. **分布式事务管理**:SUNDDB支持分布式事务处理,通过两阶段提交或三阶段提交协议保证事务的一致性和完整性。 4. **复制与容灾**:为了提高数据的安全性和系统的可用性,SUNDDB提供了多种复制模式,如主从复制、...

    EJB与Hibernate的整合简述

    EJB,全称为Enterprise JavaBeans,是Java平台上的一个核心组件,主要用于构建分布式、事务处理和安全的企业级应用程序。它提供了组件模型,使得开发者可以创建可重用的业务逻辑,这些逻辑可以在Java应用服务器中...

    一种分布式并行的高效用项集挖掘算法

    在Map阶段,P-EFIM算法首先计算所有项集的事务加权效用值,然后对这些项集进行排序。排序后的项集被重新编号,同时剔除低效用的项,以提高数据集的利用率。这里的关键是S型分配策略,它能确保子任务均匀地分配到各个...

    数据库系统原理复习资料

    8. **分布式数据库**:随着云计算的发展,分布式数据库成为热门话题,涉及数据分区、复制、分布式事务处理等。 9. **NoSQL数据库**:非关系型数据库如键值存储、文档型、列族和图形数据库,适用于大数据和高并发...

    Oracle进程结构及后台进程简介

    7. RECO(恢复):处理分布式事务的恢复问题,确保跨多个数据库节点的一致性。 8. LCKn(封锁):处理并发控制,实现事务的隔离级别。 9. Dnnn(调度进程)和Snnn(服务器进程):根据系统需求动态创建,以处理...

    数据库原理教案 特别有用易理解的教案

    10. **分布式数据库**:简述分布式数据库系统的概念,如数据复制、分区和分布式事务处理。 11. **NoSQL数据库**:对比传统SQL数据库,介绍NoSQL数据库(如MongoDB、Cassandra)的特点和应用场景。 12. **数据库...

    MicroServices和SOA的区别及应用场景分析.pptx

    这种架构解决了传统软件架构中部署成本高、风险大、频繁发布困难等问题,同时也引入了分布式系统的复杂性、部署测试监控成本以及分布式事务处理的挑战。微服务技术栈通常包括Docker容器化、API Gateway、服务发现、...

    sharding-jdbc-demo:基于sharding-jdbc实现的各种分库分表、读写分离、柔性事务、分布式主键、分布式治理等示例,持续更新中。。

    Adam Lu(刘亚壮),高级软件架构师,Java编程专家,开源分布式消息引擎Mysum发起者、首席架构师及开发者,Android开源消息组件Android-MQ独立作者,国内知名开源分布式数据库中间件Mycat核心架构师、开发者,精通Java...

    Oracle 笔记 要的赶快 放送一天

    最后,笔记可能也会简述Oracle的分布式数据库系统特性,如分布式事务处理、全局表和分布式查询,这对于大型企业级应用尤其重要。 总的来说,"Oracle笔记 要的赶快 放送一天"这份资料是全面学习Oracle数据库的一个...

    04735数据库系统原理历年真题【至201910】.zip

    9. 分布式数据库:探讨分布式数据库的基本概念,如数据分区、复制和分布式事务处理。 10. 大数据与云存储:简述大数据处理技术(如Hadoop、Spark)和云数据库服务,以及它们对传统数据库的挑战和补充。 通过...

    《数据库原理与应用》[高凯][电子教案+程序源代码]

    10. **分布式数据库**:简述了分布式数据库的原理,包括数据复制、分片和分布式事务处理。 11. **Eclipse使用简介**:这部分可能介绍了Eclipse IDE的安装、配置,创建数据库连接,以及使用Eclipse进行SQL脚本编写和...

    mysqkPPT.zip

    - 事务处理:探讨在复杂业务场景下如何运用事务,包括分布式事务和两阶段提交。 通过这些章节的学习,初学者将能够建立起对MySQL数据库的全面理解,从基础操作到高级特性的掌握,为后续的数据库管理和开发工作打下...

Global site tag (gtag.js) - Google Analytics