分布式事务:

  分布式事务是处理多节点上 的数据保持 类似传统 ACID 事物特性的 一种事物。

XA:是一种协议,一种分布式事务的协议,核心思想是2段式提交。 1 准备阶段  2 提交阶段。XA协议是 Tuxedo 首先提出的

  

  XA 的 原理 ,XA分了 几个角色,RM ,TM ,AP 等

  RM:资源管理器。他记录着XA的 事物的全部 状态(在事物结算之前不会丢失)。

  XA事物成功的流程:

    1准备阶段 RM 告诉 相关的 几个 TM(事物管理器), 最一些事情,但是别提交。这时候修改数据还不可见(除了RM 以外或者说 TM外 不可见)

    2 如果所有的 TM都告诉 RM 我可以做这个事情。那么就 通知 所有 TM  commit

    3 如果所有的 TM commit 都成功,那么这个XA 事物完成。 RM 可以忘记关于这个XA事物的数据了。

  XA事物失败的流程:

    1准备阶段 RM 告诉 相关的 几个 TM(事物管理器), 最一些事情,但是别提交。

    2 如果任何一个TM  commit 告诉 RM 我不能执行( 预提交阶段就失败 )

    3 RM 通知 这个事物涉及到的 TM  rollback

  

  XA事物极端流程: 需要补偿机制(正常不会出,除非极端情况,因为前面预处理阶段已经把数据写入了,后面 commit 只是 修改一个状态 ,让别的事物可以读到 )

    1准备阶段 RM 告诉 相关的 几个 TM(事物管理器), 最一些事情,但是别提交。

    2 如果所有的 TM都告诉 RM 我可以做这个事情。那么就 通知 所有 TM  commit

    3 如果部分 TM commit 成功,只有一个失败了。因为 RM  记录了事物的完整信息。所以可以在 做一些补偿机制,比如包刚才的 失败部分 在做一次。

  

X/open: XA协议是 Tuxedo 首先提出XA ,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准. 所以 X/open 是组织 XA 的 一个机构。

CAP :

  

CAP是三个理想的状态。但是只能3 选2 ,不能全部达到。

C:

  • Consistency 强一致性    描述数据要完全的一致,A加了 100,B 就减去100 。同时发生,一起发生。就是强一致性

A:

  • Availability 高可用 在一定的时间内正确的响应 客户端的请求。不会长时间等待挥着阻塞,不会 服务器不可用。

P:

  • Partition tolerance 分区容错性  分布式环境中如果出现了网络分区,依旧是可以正常工作。每次加入节点的变动都可以看做特殊网络分区。

  网络分区的解释:因为网络原因,集群节点部分 分成多块,每块之间的网络不能通信。

上面三个条件。在分布式环境中,网络分区,必然要考虑。所以P必选。 现在的分布式框架都是  CA 2 选1 +P。

 

2 段是事务:如果你是事务是 先预提交,然后在确认提交 分成2 段的就叫做2 段式事务。  比如 XA 协议规定的 分布式事务 就是2 段式事务。 比如 MQ 的预消息机制。 比如 给予mq 和 本地事务 实现的消息机制。

    mq 和 本地事务 实现的消息机制原理:  变 a b 两个 分布式子事物 为 插入 2 条 本地记录 一条消息A,和消息B,,如果 正常执行 A,B 两条插入记录被转个给 MQ ,如果 任何失败,A B被丢弃。

BASE:

  BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写

  BASE理论是对CAP中一致性和可用性权衡的结果。我们不都舍弃,找一个折中 的办法。 不能同时拥有,也不想放弃任何一个。那就一个区一半吧。

  

  

  Basically Available(基本可用): 在异常的时候允许适当的延长响应时间。 在并发太高的时候允许部分不是成功,而且不是全部都堵死在哪里。

  Soft state(软状态): 可以存在中间状态: A +100, B -100 如果不能同时完成,那么就让 A +100 并且B冻结 记录里面 写入100 把。这样 一个转账中的状态。

  Eventually consistent(最终一致性): 上面的 中间状态不可能让他一直存在,最终我们会让他一致的,比如,修改同一个 余额字段 ,并发太高,那么就插入冻结记录。不用锁这个字段,但是最后我们要报这个冻结 在余额 里面扣掉(在系统缓,或者一个延时队列慢慢做)。

分布式解决方案实现原理:https://www.cnblogs.com/cxygg/p/9526401.html

分布式事务 XA 两段式事务 X/open CAP BASE 一次分清的更多相关文章

  1. 数据库分布式事务XA规范介绍及Mysql底层实现机制

    1. 引言 分布式事务主要应用领域主要体现在数据库领域.微服务应用领域.微服务应用领域一般是柔性事务,不完全满足ACID特性,特别是I隔离性,比如说saga不满足隔离性,主要是通过根据分支事务执行成功 ...

  2. MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】

    概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...

  3. 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究 转载

    1.XA XA是由X/Open组织提出的分布式事务的规范.XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接 ...

  4. MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

  5. 一文教你迅速解决分布式事务 XA 一致性问题

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库团队 近日,腾讯云发布了分布式数据库解决方案(DCDB),其最明显的特性之一就是提供了高于开源分布式事务XA的性能.大型 ...

  6. XA: 事务和两阶段提交

    本文原文连接:http://blog.csdn.net/bluishglc/article/details/7612811 ,转载请注明出处! 1.XA XA是由X/Open组织提出的两阶段提交协议, ...

  7. DTP模型之一:(XA协议之三)MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

  8. 详解Mysql分布式事务XA(跨数据库事务)

    详解Mysql分布式事务XA(跨数据库事务) 学习了:http://blog.csdn.net/soonfly/article/details/70677138 mysql执行XA事物的时候,mysq ...

  9. Mysql数据库分布式事务XA详解

    XA事务简介 XA 事务的基础是两阶段提交协议.需要有一个事务协调者来保证所有的事务参与者都完成了准备工作(第一阶段).如果协调者收到所有参与者都准备好的消息,就会通知所有的事务都可以提交了(第二阶段 ...

随机推荐

  1. mybatis 一对多和一对一写法注意事项

    <resultMap id="ChartResultMap" type="com.qif.dsa.ucenter.planinfo.entity.ChartDate ...

  2. windows环境下,svn未备份情况下重新恢复

    公司有个同事在未打招呼的情况下把公司服务器进行重新装系统,崩溃啊.SVN之前未备份,还好SVN的库(Repositories)还在,如下图: 恢复办法如下: 由于之前安装的就是VisualSVN-Se ...

  3. JS的 try catch 前端使用场景(尽管不多还是会用到)

    try{ //正常执行 }catch(e/*你感觉会出错的 错误类型*/){ // 可能出现的意外 eg:用户自己操作失误 或者 函数少条件 不影响下面的函数执行 // 有时也会用在 比如 focus ...

  4. 扩展IEnumerable<T> ForEach()方法

      相信很多人,在用Linq时,都会困惑为什么IEnumerabel<T>没有ForEach,虽然 我们一样可以这样写,很快读写 foreach(item in items) { Cons ...

  5. 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t[转]

    菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blo ...

  6. Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析

    Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析 今天主要讲述的内容是关于决策树的知识,主要包括以下内容:1.分类及决策树算法介绍2.鸢尾花卉数据集介绍3.决策树实现鸢尾数据集分析.希望这篇 ...

  7. java基础之Character类概述

    Character 类 在对象中包装一个基本类型 char 的值 此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然 构造方法 public Cha ...

  8. python web 分页组件

    闲来无事便写了一个易使用,易移植的Python Web分页组件.使用的技术栈是Python.Django.Bootstrap. 既然是易使用.易移植的组件,首先介绍一下其在django框架中的调用方式 ...

  9. leetcode 854. K-Similar Strings

    给定两个字符串, 判断最少经过多少次swap 可以使得 两个字符串一致, 首先类似的问题 是存在一个 underlying graph 的. 每一个字母都对应着一个节点,两个字符串的不一致表示为图上的 ...

  10. 关于大数据平台ETL可行性方案

    今年做过两个公司需求都遇到了实时流入hive的需求,storm入hive有几种可行性方案. 1.storm直接写入hive,storm下面有个stormhive的工具包,可以进行数据写入hive.但是 ...