Oracle分布式事务和两阶段提交(2PC)

分布式事务是指发生在多台数据库之间的事务,Oracle中通过dblink方式进行事务处理, 分布式事务比单机事务要复杂的多。大部分的关系型数据库通过两阶段提交(2 Phase Commit 2PC)算法来完成分布式事务,下面重点介绍下2PC算法。

1、分布式事务的 组成

在分布式事务中,主要有以下几个组成部分:

Client:调用其它数据库信息的节点

Database:接受来自其它节点请求的节点

Global Coordinator (GC):发起分布式事务的节点

Local Coordinator (LC):处理本地事务,并和其它节点通信的节点

Commit Point Site (CPS):被Global Coordinator指定首先提交或回滚事务的节点

在分布式事务中,Commit Point Site非常重要,它不需要进入2PC的Prepared 状态,因 为它通常操作最关键数据,所以它不会出现in-doubt状态。Commit Point Site总是优先于其 它数据库节点先提交,目的在于保护最关键的数据,它决定整个分布式事务是提交还是回滚 。分布式事务中其它数据库节点在GC的指挥下进行后续的提交(或回滚)。

那么在Oracle中如何选取Commit Point Site呢?它是根据参数commi_ point_strength 最大的数据库作为Commit Point Site。

2、两阶段提交(2PC)

两阶段提交协议可以保证数据的强一致性,许多分布式关系型数据管理系统采用此 协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交或取消(回滚) 的分布式算法。同时也是解决一致性问题的算法。该算法能够解决很多的临时性系统故障( 包括进程、网络节点、通信等故障),被广泛地使用。但是,它并不能够通过配置来解决所 有的故障,在某些情况下它还需要人为的参与才能解决问题。

顾名思义,两阶 段提交分为以下两个阶段:

1)Prepare Phase (准备节点)

2)Commit Phase (提交阶段)

1)Prepare Phase

在请求阶段,协调者将通知事务参 与者准备提交或取消事务,然后进入表决过程。在表决过程中,参与者将告知协调者自己的 决策:同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)。

为了完成准准备阶段,除了commit point site外,其它的数据库节点按照以下步骤执行:

每个节点检查自己是否被其它节点所引用,如果有,就通知这些节点准备提交(进入 Prepare阶段)。

每个节点检查自己运行的事务,如果发现本地运行的事务没有修改数据的操作(只读), 则跳过后面的步骤,直接返回一个read only给全局协调器。

如果事务需要修改数据,则为事务分配相应的资源用于保证修改的正常进行。

当上面的工作都成功后,给全局协调器返回准备就绪的信息,反之,则返回失败的信息。

时间: 2024-10-27 01:10:43

Oracle分布式事务和两阶段提交(2PC)的相关文章

分布式事务(两阶段提交)模型详解

这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来. 在上一节事务的编程模型里面,主要说明了三种编程模型,一般情况下,我们都接触的是单一资源的事务,也就是单独对一个数据库进行操作.如果需要跨多个资源保证事务一致性 举个例子:在ATM机取钱的时候,需要对用户的账户进行扣款处理,然后发送一条消息给消息服务器(假设消息服务器是用JMS实现的),由消息服务器异步通过短信通知用户.如果

分布式事务、XA、两阶段提交、一阶段提交

1.XA   XA是由X/Open组织提出的分布式事务的规范.XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口.XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁.XA之所以需要引入事务管理器是因为,在分布式系统中,从理论上讲(参考Fischer等的论文),两台机器理论上无法达到一致的状态,需要引

谈谈分布式事务之四: 两种事务处理协议OleTx与WS-AT

在年前写一个几篇关于分布式事务的文章,实际上这些都是为了系统介绍WCF事务处理体系而提供的相关的背景和基础知识.今天发最后一篇,介绍分布式事务采用的两种协议,即OleTx和WS-AT,内容比较枯燥,但对于后续对WCF事务处理框架进行深入剖析的系列文章来说,确是不可以缺少的.总的来说,基于WCF的分布式事务采用的是两阶段提交(2PC:Two Phase Commit)协议.具体来说,我们可以选择如下两种事务处理协议实现WCF的分布式式事务,它们按照各自的方式提供了对两阶段提交的实现. OleTx:

MySQL分布式事务(XA事务)

MySQL分布式事务(XA事务) 官网:https://dev.mysql.com/doc/refman/5.7/en/xa.html 1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败.本质上来说,分布式事务就是为了保证不同数据库的数据一致

如何用消息系统避免分布式事务?(转)

http://www.cnblogs.com/LBSer/p/4715395.html 前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了. 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增

分布式事务

分布式      总体来看,如果所有数据的修改仅依靠单个数据源就能完成,则这个事务就相当简单了.然而,随着商业需求的日益增加,应用程序变得越来越复杂,经常需要访问多个数据库,这些数据库通常分布在不同的地方,这就是分布式事务.分布式事务修改的数据存储在多个或多种类型的数据源中,这些数据源分布在多台机器上,甚至更复杂的情况.    设想有一个事务,要求数据变化发生在两个分离的数据库中,仍然要求所有的ACID特性测试能够满足.基本的事务处理不能满足要求,因为如果其中一个数据库服务器失败,无法确保另外一

分布式事务系列(3.2)jotm分布式事务源码分析

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 了解xapool 我们在前一篇文章中了解到jotm配合xapool共同完成了分布式事

“分布式事务”的理解(适用于访问多个数据库之间)

        原文地址:http://blog.163.com/soli1988_blog/blog/static/176895272201212812416747/              总体来看,如果所有数据的修改仅依靠单个数据源就能完成,则这个事务就相当简单了.然而,随着商业需求的日益增加,应用程序变得越来越复杂,经常需要访问多个数据库,这些数据库通常分布在不同的地方,这就是分布式事务.分布式事务修改的数据存储在多个或多种类型的数据源中,这些数据源分布在多台机器上,甚至更复杂的情况.

破解世界性技术难题! GTS让分布式事务简单高效

近日,2017云栖大会·深圳峰会如期举行,多项阿里云新产品对外发布.在企业级互联网架构分会场,来自阿里中间件(Aliware)的技术专家及合作伙伴,为现场参会嘉宾带来最新的传统IT架构到企业级互联网架构跨越式升级.实现互联网转型的产品及解决方案.其中高级技术专家姜宇在分享中带来的Aliware新产品-全局事务服务(Global Transaction Service ,简称GTS),在分布式事务处理上带来的高性能和技术创新令到场参会的各路技术专家眼前一亮. Aliware新成员-全局事务服务GT