zoukankan      html  css  js  c++  java
  • 分布式事务方案

    XA/二阶段提交

    基于XA协议的二阶段提交

    所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问各个数据库准备好了吗?如果每个数据库都回 ok,那就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。

    这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,不适合高并发的场景。

    JTA

    JTA只是Java实现XA事务的一个规范,全称Java事务规范JTA(Java Transaction API) ,我们日常使用的@Transactional。都可以叫JTA事务管理。实际上,JTA是基于XA架构上建模的,

    对于Spring来说,可以使用如JBoss之类的应用服务器提供的JTA事务管理器;可以以使用Atomikos、Bitronix等库提供的JTA事务管理器。Spring都有封装,开箱即用。

    链式

    对于Spring,还有个链式事务管理,就是声明一个ChainedTransactionManager 将所有的数据源事务按顺序放到该对象中,则事务会按相反的顺序来执行事务。事务依次提交后提交的事务若出错不能回滚。

    1.start message transaction
    2.receive message
    3.start database transaction
    4.update database
    5.commit database transaction
    6.commit message transaction   ##当这一步出现错误时,上面的因为已经commit,所以不会rollback

    和JTA比起来,更轻量,但只能单机用。

     

  • 相关阅读:
    C#获取Word文档页数,并跳转到指定的页面获取页面信息
    GC 垃圾回收
    Open Flash Chart 之线图
    Open Flash Chart 之线图(二)
    Nullable可空类型
    System.AppDomain类
    C# 事件
    C#方法的参数 Ref Out Params 4种类型的参数
    单向链表
    C# 结构体 struct
  • 原文地址:https://www.cnblogs.com/KL2016/p/15117311.html
Copyright © 2011-2022 走看看