`
oscar999
  • 浏览: 216793 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

java 分布式事务处理

 
阅读更多

分布式事务处理   

当数据分布在多个数据库服务器上时,就需要各种保护措施来保证数据正确地写到所有数据库中。例如,考虑一个在三个分离的远程数据库上修改的 客户帐户平衡表,如果在事务写阶段,任何一个数据库连接失败,数据库之间就失去同步。怎样检测并更正这种情形呢?事务处理(TP)监示一个叫做两阶段提交 的过程并在某种程度上解决了这个问题。

分布式系统上的实时事务处理需要一个两阶段提交过程保证将事务得到多个数据库上时的数据完整性。所涉及到的每个数据库在事务被提交给任何其他数据库 时都要授权给它。如果事务成功,则被提交,否则事务应被回退。与容错系统类似,两阶段提交保护系统防止在事务写期间发生系统错误。它也允许操作员异常终止 一个事务并将数据库恢复到原先的状态。事务监示器按下面的过程跟踪事务过程。   

1.写操作命令被送到每个数据库后,事务监示器等待一个响应信号以保证所有的系统都准备好写。如果所有系统都来响应,事务将在这里异常终止。   

2.假定都响应了,事务监示器指示数据库开始写,然后等待每一个系统表明数据写成功的确认信号。   

3.若未得到所有系统响应信号(由于线路或系统故障),事务监示器命令所有数据库将此次的写操作取消。


例如,运行在机器A上的一个组件是单个事务的组成部分之一,组件能够利用机器B上的SQL Server执行数据库事务。组成事务的另一组件用运行在机器C上的Oracle服务器执行数据库事务。这三台机器运行着四块不同的代码,它们全都要参与到这个事务中。
即使通过COM+隐藏分布式事务中的细节,也必要研究和了解分布式事务的“幕后”结构。请记住这些ACID特性适用于所有类型的事务,不论事务涉及的数据库是什么类型或数量有多少。
使用MS DTC进行两阶段提交
让我们再看一下上述分布式事务的例子。如果Oracle服务器停机了,如何保证事务的原子性。答案是使用两阶段提交(two-phase commit,2PC)和通过Microsoft分布式事务协调器(MS DTC)协调。
MSDTC是最先集成在SQL Server中,现在已成为COM+必不可少的部分,通过在事务处理中加入其他的因子,MS DTC确认所有的过程完成并提交他们。
让我们进一步研究MS DTC,了解其工作方式。为了能用两阶段提交协议进行协调,事务中的每个数据源必须装有MS DTC。在这些安装中,主要的协调器总是在事务的起源之处。这个主要的协调器称为提交协调器,它负责确保事务的提交或终止。不管事务是成功地提交还
是回滚,提交协调器都负责向客户应用程序返回一个报告。
在两阶段提交中第一阶段是准备阶段,每个服务器执行它接收的指令,但所有应写到磁盘的内容都被缓冲,如图1 9 - 1所示。

一旦服务器已执行了指令,就通知提交协调器关于事务的状况,如图1 9 - 2所示。

第二阶段称为提交阶段。如果提交协调器接收到来自每个数据源的“准备提交”通知,就提交事务,如图1 9 - 3。

然而,如果从某一受影响的数据源接收到失败信息,提交协调器将执行回滚,并且通知客户应用程序,见图1 9 - 4。

  

分享到:
评论

相关推荐

    java分布式事务demo

    分布式事务处理通常涉及ACID(原子性、一致性、隔离性和持久性)原则,这些原则是传统数据库事务管理的基础。在Java中,实现分布式事务的方法有很多,例如使用JTA(Java Transaction API)或者Spring框架的声明式...

    基于Java的分布式事务解决方案myth设计源码

    该项目是一个采用消息队列解决分布式事务的开源框架,基于Java语言开发(JDK1.8),并支持dubbo、springcloud、motan等RPC框架进行分布式事务处理。通过该项目,开发者可以学习并实践分布式事务的处理,为后续的...

    大规模SOA系统中的分布式事务处理

    本讲义将深入探讨在Java环境下实现大规模SOA系统中的分布式事务处理的关键技术和挑战。 首先,我们需要理解什么是分布式事务。在分布式系统中,事务是跨越多个节点的一系列操作,这些操作要么全部成功,要么全部...

    springboot多数据源即分布式事务解决方案

    SpringBoot提供了多种分布式事务管理器,如JTA(Java Transaction API)和Spring的PlatformTransactionManager。 JTA是Java EE平台的标准,支持全局事务。在SpringBoot中,可以使用Atomikos或Bitronix这样的第三方...

    事务处理API分布式事务处理

    本文的目的是要提供一个关于的Java事务处理... 一个分布式事务处理只是一个在两个或更多网络资源上访问和更新数据的事务处理,因此它在那些资源之间必然是等价的。在本文中,我们主要关心的是如何处理关系数据库系统。

    微服务架构的分布式事务解决方案(Dubbo分布式事务处理)

    分布式事务是一个绕不过去的...教程中的样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,教程中所实现的分布式事务解决方案在Java体系中的微服务架构系统都能通用,与具体的开发框架无关。

    Java 分布式事务(多数据源)

    当我们谈论“Java分布式事务(多数据源)”时,这通常涉及到处理跨越多个数据库或数据源的事务一致性问题。在单个数据库中,我们可以利用ACID(原子性、一致性、隔离性和持久性)特性来确保事务的可靠性,但在分布式...

    分布式事务详细介绍

    #### 四、分布式事务处理挑战 在分布式环境中,事务处理面临更多的挑战,主要是因为分布式系统涉及跨多个节点的数据同步和一致性问题。 1. **一致性保证**:在分布式事务中,需要确保多个参与方的操作要么全部成功...

    java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip

    本项目"java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip"是一个基于若依(RuoYi)框架改造的多模块分布式事务解决方案,它利用了Atomikos这一强大的分布式事务管理器。以下将详细解析这个项目的知识点...

    基于Hyperf框架的TCC分布式事务组件.zip

    而TCC分布式事务组件则是Hyperf对分布式事务处理的一个重要补充,使得开发者能够在微服务环境中处理复杂的业务逻辑,保证数据的一致性。 TCC模式的核心思想是将一个全局事务拆分为多个本地事务,每个本地事务对应一...

    java分布式系统架构源码

    EJB容器管理了对象的生命周期,包括事务处理、安全性和资源管理,使得开发者可以专注于业务逻辑。 接下来,我们关注“jeesuite-libs”。这可能是一个包含各种Java库的集合,用于支持分布式系统的构建。Jeesuite可能...

    分布式事务.pdf

    除此之外,也有基于消息队列、补偿事务(TCC)等不同实现方式的分布式事务处理策略。 然而,在实际应用中,分布式事务的引入会增加系统的复杂度和开销,因此在决定是否采用分布式事务时,应该充分评估业务需求和...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    在IT行业中,分布式事务处理是复杂系统架构中的一个重要环节,特别是在多数据库或服务协同工作的场景下。本项目“spring+jotm+ibatis+mysql实现JTA分布式事务”旨在利用这些技术来确保在分布式环境中的数据一致性。...

    基于tcc的Java分布式事务框架.zip

    Java分布式事务框架是现代大型分布式系统中不可或缺的一部分,它确保在多节点、多服务之间的一致性和可靠性。基于TCC(Try-Confirm-Cancel)的Java分布式事务框架是一种解决此类问题的有效方法。TCC模式是一种补偿型...

    Java分布式架构设计实战视频课程(2022最新版,13章全)

    五、分布式事务处理 在分布式环境中,事务一致性是挑战之一。课程将探讨2PC、TCC、Saga等多种分布式事务解决方案,以及如何在Java中实现这些策略。 六、消息队列与异步处理 消息队列如RabbitMQ和Kafka在分布式系统...

    分布式事务视频教程

    ### 分布式事务基础知识与实践 #### 一、分布式事务概念及重要性 在现代软件架构中,随着业务复杂度的提升...此外,随着技术的发展,未来可能会有更多高效、可靠的分布式事务处理方式出现,值得我们持续关注和学习。

    Java微服务系统分布式事务解决方案.docx

    针对分布式事务处理,目前存在多种解决方案,每种方案都有其特点和适用场景。 1. **异步校对数据的方式**:如支付宝、微信支付采用的主动查询支付状态、对账单的形式。适用于支付等金融场景。 2. **基于可靠消息...

Global site tag (gtag.js) - Google Analytics