何为分布式事务

 

一个事务包含多个操作,多个操作操作了多个数据源,这样的事务称为分布式事务

和普通事务的区别

单一数据源,事务管理可以借助数据源本地事务完成,实现简单

分布式事务之困难:不可简单的借助数据源本地事务完成

为什么:

但是这样的事务有保障吗?

1、提交时,db1提交成功,db2网络不通

2、提交时con1提交完成,此时应用重启了或者应用及其断电了

分布式事务管理需要什么?

分布式事务管理需要:

1协调各数据源提交、回滚、以及应对通信异常的管理机制

2数据源需要支持这种机制

3应对应用恢复的机制

从上面可以得出,做分布式事务管理需要的参与者

如果是这样,那么

1 事务管理器协调数据源,两者之间需要通信,并需要一套协议规范

2为应对网络,主机故障等,事务管理器,数据源需要记录相关的事务日志

何为XA规范

X/Open(The open group)提出的分布式事务处理规范,分布式事务处理的工业标准

XA-DTP

X/Open Distributed Transaction Processing(DTP)model分布式事务处理模型

XA-流程

XA-两阶段提交

JTA是什么?

JTA: Java Transaction Api

Java 根据XA规范提出的事务处理规范

目的:同意API,简化程序员的学习,简化编程

JTA-API-构成

面向TM、RM提供商的API:

面向编程者的API:

UserTransaction

Jta-tm实现提供商

JavaEE应用服务器内建JTA事务管理(TM),提供商:

Weblogic,websphere

开源、独立的JTA事务管理器(TM)组件:

Java Open Transaction Manager(JOTM)

JBoss TS

Bitronix Transaction Manager(BTM)

Atomikos

Narayana

Jta-rm实现提供商

在连接池组件中一般也会提供包装实现:

Spring中应用JTA

Spring 自身并未提供jta TM实现,但提供了很好的集成

根据TM的提供者不通,分为两种应用方式

方式一:使用JavaEE服务器内建的TM,用法做如下配置即可

说明:JtaTransactionManager通过JNDI找到服务器提供的java:comp/UserTransaction,
java:comp/TransactionManager

应用使用的数据源需是支持xa的数据源

方式二:在没有实现TM的应用服务器上(Tomcat,jetty),将独立的TM组件集成到

我们的应用中

一:使用轻量级服务器+集成TM组件

二:使用轻量级服务器+集成TM组件

1、引入TM组件的jar(以Atomikos为例)

2、配置数据源,一定要是XA数据源

3、配置事务管理器TM
TransactionManager的实现bean
UserTransaction的实现bean
spring的JtaTransactionManager(注入TM、UserTransaction)
准备两个数据源

JTA事务管理的更多相关文章

  1. JTA事务管理--配置剖析(二)

    Spring引用Tomcat的 JTA事务     Tomcat是Servlet容器,但它提供了JNDI的实现,因此用户可以象在Java EE应用程序服务器中一样,在Tomcat中使用JNDI查找JD ...

  2. JTA事务管理--配置剖析

    概述    [IT168 专稿]Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻.但是很大部分人都还认为 ...

  3. springboot多数据源+jta事务管理配置

    1.创建一个maven项目,导入相关配置: <?xml version="1.0" encoding="UTF-8"?> <project x ...

  4. Spring+JTA+Atomikos+mybatis分布式事务管理

    我们平时的工作中用到的Spring事务管理是管理一个数据源的.但是如果对多个数据源进行事务管理该怎么办呢?我们可以用JTA和Atomikos结合Spring来实现一个分布式事务管理的功能.了解JTA可 ...

  5. hibernate事务管理 (jdbc jta)

    hibernate的两种事务管理jdbc 和jta方式.下边说说两者的区别一.说明一下jdbc和jta方式事务管理的区别:JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC ...

  6. atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA)

    原文链接:http://iteye.blog.163.com/blog/static/1863080962012102945116222/   Atomikos TransactionsEssenti ...

  7. SpringBoot2 整合JTA组件,多数据源事务管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.JTA组件简介 1.JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个 ...

  8. Spring事务管理(转)

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...

  9. Hibernate 事务管理

    一. 事务包含四个基本特性:简称ACID: 1. Atomic(原子性):全部成功或全部失败: 2. Consistency(一致性):只有合法数据才能被写入,不合法则回滚到最初状态: 3. Isol ...

随机推荐

  1. 【转载】用实例给新手讲解RSA加密算法

    实践文章:https://mp.weixin.qq.com/s/dCQ17NKWu5ISc-eNhFDlvw 原文地址:http://bank.hexun.com/2009-06-24/1189585 ...

  2. python基础之作业2----购物车小练习

    product_list = [    ("Iphone",6000),    ("Mac pro",12800),    ("Bike", ...

  3. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用

    SolrCloud7.4(Jetty容器)搭建 1.Zookeeper搭建 版本:zookeeper-3.4.10.tar.gz 1.把zookeeper安装包上传到服务器 2.zookeeper解压 ...

  4. 关于python那些事儿

    学习总结: 1.输入一个数据 a=input. 2.在输出结果中增加字符 # 运行如下语句: print("你的名字叫{}.".format("饺子")) (以 ...

  5. Google 最新推出数据集搜索

    继Google在2004年11月推出Google的重量产品Google scholar后,Google在最近推出的另一个重量级产品 Google Dataset Search.众所周知,互联网上的信息 ...

  6. Linux Network Command

    查看 内外网访问ipnetstat -an download file from server scp -r root@139.xxx.xxx.82:~/virtualbox.box /tmp/

  7. Context Encoder论文及代码解读

    经过秋招和毕业论文的折磨,提交完论文終稿的那一刻总算觉得有多余的时间来搞自己的事情. 研究论文做的是图像修复相关,这里对基于深度学习的图像修复方面的论文和代码进行整理,也算是研究生方向有一个比较好的结 ...

  8. nodejs03-GET数据处理

    数据请求:--- 前台:form ajax jsonp 后台:一样 请求方式: 1.GET 数据在URL中 2.POST 数据在请求体中 请求数据组成: 头--header:url,头信息 身子--c ...

  9. 分布式大数据系统离线分析技术解决方案(spark2.x)

    一.sark2.x新型的架构系统

  10. java基础知识—运算符和基本选择结构

    1.保存真假,使用boolean变量 boolean有两个值:true 真 false 假 2.从控制台接受输入信息,通过创建扫描器 Sacnner input=new Sacnner(System. ...