发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

Spring的分布式事务实现(JTA+XA/2PC)

                   
2017-04-12 15:47
赞助商链接

JTA是Java Transaction API简称 ,即Java事务管理器,主要管理本地事务。本地事务是只同一个数据库源中,多次数据库连接之间的事务,使得这多个数据表操作遵循ACID。

如果想让JTA管理多台数据库操作的分布式事务,需要XA支持,Open Group设计的X / Open分布式事务处理定义了一种标准通信架构。允许多个应用程序共享多个资源管理器提供的资源,并允许其工作协调到全局事务中。该XA接口使资源管理者参加事务,执行2PC(两个阶段提交),并在发生故障之后恢复。

2PC(两段提交)含义:首先, 事务协调员向每个服务器询问一遍,要求每个数据库都进行precommit的操作和是否可能实现 commit. 如果所有数据库都同意commit ,第二段开始。第二段:事务协调员要求每个数据库commit数据. 如果任何数据库否决commit, 那么所有数据库将被要求回滚。当事务对某个数据库锁定时,这个数据库或列就不可用,或者响应时间很慢。牺牲可用性了。

JTA + XA能够实现分布式事务2PC 。

Spring提供了JTA介入方式,但是没有提供JTA实现,目前JTA实现: Java Open Transaction Manager (JOTM), JBoss TS, Bitronix Transaction Manager (BTM), 和 Atomikos。

相关文章:
XA transactions using Spring,最老的一篇文章,JBossTS提供数据源之间的事务,但是不支持数据库源和JMS源,而Atomikos则支持。

Spring分布 式事务XA事务(两段提交2PC)实现:BTM的JTA实现。

Two Phase Commit With Tomcat Spring JMS And JDBC:使用Atomikos+Spring + JMS + JDBC实现

使用1PC实现分 布式事务,这是避免使用2PC,打插边球,虽然可靠性降低,但是性能提升,主要适合两三个不太多的数据库同时更新。

Configuring Spring and JTA without full Java EE:Spring官方网站的分 布式事务案例

在Weblogic服务器中使用Spring,安装MedRec-Spring可支持分布 式事务

xa transaction spring:文章提供源码案例。

Spring JTA multiple resource transactions in Tomcat with Atomikos example:提供了Atomikos+Spring源码案例

[该贴被banq于2017-04-12 15:49修改过]
[该贴被banq于2017-04-12 15:50修改过]
[该贴被banq于2017-04-12 15:51修改过]

JTA事务      微服务      分布式事务      spring     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com