社区
Java SE
帖子详情
请问数据库中的双步提交(Two-Phase Commit,2PC)是什么意思?
wingardium
2010-05-21 11:29:06
请举个具体例子说明下,谢谢!
...全文
538
5
打赏
收藏
请问数据库中的双步提交(Two-Phase Commit,2PC)是什么意思?
请举个具体例子说明下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
@井九
2010-05-21
打赏
举报
回复
主要是事务的嵌套会发生2PC
火龙果被占用了
2010-05-21
打赏
举报
回复
JTA 在 J2SE 环境中是没办法测试的,必须在 J2EE 应用服务器中。
J2EE 应用服务器为什么说会有好的、差的,免费的和商业的,其中最为重要的一点就是对于事务的处理能力。像开源的 J2EE 应用服务器在这一点上是没办法跟 WebLogic, WebSphere 这些商业 J2EE 应用服务器相比拟的。
在 J2EE 环境中使用 JTA 事务与 Local 事务的代码是一模一样的,对于开发人员来说这绝对是希望听到的。
Local 事务就是通常所称的 Connection 的事务
火龙果被占用了
2010-05-21
打赏
举报
回复
2-PC 称为“两阶段提交”,2-PC 是分布式事务协议。
比如说一个事务涉及 Oracle、MySQL 和 MS SQLServer 三个数据库的操作,举个最简单的例子,要在这三个数据库中各插入一条数据,但必须保持在一个事务中,要三个插入全部成功才算成功,如果只成功了一个或者两个,那么所有的操作都进行回滚,而 2-PC 就是用来干这事的。
两阶段提交需要有个中间协调人。在 Java 中只有 JTA 才能支持两阶段提交,而这个中间协调人就是 J2EE 应用服务器。
继续刚才那个事务,两个阶段如下:
一、各数据库在执行完 INSERT 后,J2EE 应用服务器在收到提交指令,这时通知各数据库进行事务提交准备。
数据库在收到响应后,进行准备工作,基本上是一个预提交工作,如果能提交则响应 J2EE 应用服务器是 能成功提交的,如果无法提交则响应 J2EE 应用服务器是无法提交的。
二、J2EE 应用服务器在收集到所有的响应之后进行判断,如果在第一阶段收到的信息都是可提交的,那么就通知所有的数据库进行提交;如果在第一阶段收到的信息有一个是无法提交的,那么就通知所有的数据库进行回滚操作。
通过这些步骤,可以看出分布式事务处理是很耗时的,也是相当麻烦的。因为数据库在第一阶段给事务协调器响应后如果能提交,在第二阶段就必须要保证事务能被提交,这是数据库要做的事情。
这里的 J2EE 应用服务器是 2-PC 的协调者。2-PC 在 JAVA 中不仅可以用于分布式数据库事务,也能应用于 JMS 事务。
要支持分布式事务,那么数据库就必须支持两阶段提交协议,否则是不能支持的。
wingardium
2010-05-21
打赏
举报
回复
[Quote=引用 1 楼 hardycheng 的回复:]
http://en.wikipedia.org/wiki/Two-phase_commit_protocol
维基百科中的解释
[/Quote]
但是里面没有实际例子。
hardycheng
2010-05-21
打赏
举报
回复
http://en.wikipedia.org/wiki/Two-phase_commit_protocol
维基百科中的解释
两阶段
提交
协议(two
phase
commit
protocol,2
PC
)
两阶段
提交
协议(two
phase
commit
protocol,2
PC
)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定
提交
或取消(回滚)的分布式算法。同时也是解决一致性问题的一致性算法。该算法能够解决很多的临时性系统故障(包括进程、网络节点、通信等故障),被广泛地使用。但是,它并不能够通过配置来解决所有的故障,在某些情况
两阶段
提交
协议(two
phase
commit
protocol,2
PC
)详解
一、协议概述 两阶段
提交
协议(two
phase
commit
protocol,2
PC
)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定
提交
或取消(回滚)的分布式算法。同时也是解决一致性问题的一致性算法。该算法能够解决很多的临时性系统故障(包括进程、网络节点、通信等故障),被广泛地使用。但是,它并不能够通过配置来解决所有的故...
架构之2
PC
(Two-
Phase
Commit
)协议
两阶段
提交
协议(Two-
Phase
Commit
,简称2
PC
) 是一种分布式系统
中
用于保证所有参与节点要么全部
提交
事务,要么全部回滚事务的原子性协议。它通过协调者(Coordinator)和参与者(Participants)之间的协作,确保分布式事务的ACID特性
中
的原子性(Atomicity)。
两阶段
提交
协议(Two-
Phase
Commit
,2
PC
)
两阶段
提交
协议(Two-
Phase
Commit
,2
PC
) 是一种分布式事务处理协议,旨在确保在多个分布式系统
中
执行的事务能够在所有参与者
中
保持一致性。2
PC
协议通过将事务的
提交
过程分为两个阶段来实现这一点,确保即使在出现故障的情况下,也能保持数据的一致性。
分布式事务理论-二阶段
提交
(Two-
phase
Commit
)
1 2
PC
两阶段
提交
协议为了保证分布在不同节点上的分布式事务的一致性,我们需要引入一个协调者来管理所有的节点,负责各个本地资源的
提交
和回滚,并确保这些节点正确
提交
操作结果,若
提交
失败则放弃事务。 2.1 XA 协议 XA 是一个分布式事务协议,规定了事务管理器和资源管理器接口。因此,XA 协议可以分为两部分,即事务管理器和本地资源管理器。 事务管理器作为协调者,负责各个本地资源的
提交
和回滚; 资源管理器就是分布式事务的参与者.其
中
资源管理通常是
数据库
。 基于 XA 协议的二阶段
提交
方法
中
,二阶
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章