zoukankan      html  css  js  c++  java
  • Spring 分布式事务详解

    在学习分布式事务的过程中会遇到以下关键名词:

    相关名词:

    XA :XA规范的目的是允许多个资源(如数据库,应用服务器,消息队列,等等)在同一事务中访问,这样可以使ACID属性跨越应用程序而保持有效。XA使用两阶段提交来保证所有资源同时提交或回滚任何特定的事务。

    JTA: Java事务API(Java Transaction API,简称JTA ) 是一个Java企业版 的应用程序接口,在Java环境中,允许完成跨越多个XA资源的分布式事务。

    分布式事务要解决的问题:

    把不同支援放到一个事物中,实现ACID。举例说明,一个方法中需要操作两个数据库 db1,db2, 本地事物是基于connection ,所以无法保证两个库的事物,这是后需要用到分布式事物。

    分布式事务原理:

    两阶段提交。简单来说,引入事务管理器(txManager)的概念,开启事务前,txManager 创建一个 tx ,txId 是全局事务的唯一标示, 方法中db1操作完成后,告知tx  db1操作成功,但db1没有真的提交,而是block住了。db2 继续执行,执行完了自己block住,然后告知txManager,这个事物可以提交了,然后txManager 通知db1 db2 你们可以真正提交了,事物结束。

    db block 住属于第一阶段, 真正提交或者回滚属于第二阶段,这就是两阶段提交。

    分布式事务实现方案:

    1.基于 XA和JTA 规范的,需要用到JNDI ,比较笨重。JTA 的实现方式是依赖支持jndi 的容器,资源(datasource)和管理器(txManager)都必须配置成jndi ,然后两阶段过程是在容器层面执行的,影藏了具体细节。

    2.非规范实现。

    spring 官方推荐的分布式事物实现方案有:  Atomikos  Bitronix

    Atomikos 支持了XA规范和非XA:

     mysql-connector.jar 驱动程序对JTA的支持:

  • 相关阅读:
    安卓高级6 拍照或者从相册获取图片 并检测旋转角度或者更新画册扫描
    安卓高级6 玩转AppBarLayout,更酷炫的顶部栏 Toolbar
    安卓高级6 CoordinatorLayout
    安卓高级6 SnackBar
    android addCategory()等说明
    Eclipse如何解决启动慢?
    Java基础知识总结(绝对经典)
    java反射详解 三
    java反射详解 二
    java反射详解 一
  • 原文地址:https://www.cnblogs.com/kevin7234/p/10654032.html
Copyright © 2011-2022 走看看