什么是分布式事物

分布式事务模型( X/Open DTP)

X/Open DTP(X/Open Distributed Transaction Processing Reference Model) 
  --分布式事务,也就是跨越多个资源的保证数据一致性。
X/Open DTP 定义了三个组件: AP,TM,RM
DTP中定义了 XA 接口
DTP概念:
      事务:一个事务是一个完整的工作单元,由多个独立的计算任务组成,这多个任务在逻辑上是原子性的
      全局事务: 对于一次性操作多个资源管理器的事务,就是全局事务
      分支事务:在全局事务中,某一个资源管理器有自己独立的任务,这些任务的集合作为这个资源管理的分支任务
      控制线程: 用来表示一个工作线程,主要是关联AP,TM,RM三者的一个线程,也就是事务上下文环境,简单的说
        ,就是需要表示一个全局事务以及分支事务的关系。
AP(Application Program):也就是应用程序,可以理解为使用DTP的程序
RM(Resource Manager): 资源管理器,这里可以理解为一个DBMS系统,或者消息服务器管理系统,应用程序通过资源管理器对 
 资源进行控制。资源必须实现XA定义的接口
TM(Transaction Manager): 事务管理器,负责协调和管理事务,提供给AP应用程序编程接口以及管理资源管理器
image.png

image.png介绍

其中AP可以和TM以及RM通信,TM和RM互相之间可以通信,DTP模型里面定义了XA接口,TM和RM 
通过XA接口进行双向通信,例如: TM通知RM事务提交或者回滚,RM把提交结果通知给TM,AP和 
RM之间则通过RM提供的Native API 进行资源控制(各个厂商有各自的实现,oracle / mysql)

XA

XA是由X/Open组织提出的两阶段提交协议,分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction 
Manager)和(局部)资源管理器(Resource Manager)之间的接口。
什么时候应该使用XA?
      仅在同一个事务上下文中需要协调多种资源(即数据库,以及消息主题活队列)时,才有必要使用XA接口

两阶段提交协议(2pc)

  如果一个事务管理器管理着多个资源管理器,如果控制全局事务和分支事务,在DTP里面说明两阶段提交的协议
  第一阶段:准备阶段
   事务管理器通知资源管理器准备分支事务,资源管理器告知事务管理器准备结果
  第二阶段:提交阶段  
   事务管理器通知资源管理器提交分支事务,资源管理器告知事务管理器结果
第一阶段.png

第二阶段.png

参考: https://www.cnblogs.com/aigongsi/archive/2012/10/11/2718313.html

分布式理论

CAP理论

  一致性(Consistency) : 客户端知道一系列的操作都会同时发生(生效)
  可用性(Availability) : 每个操作都必须以可预期的响应结束
  分区容错性(Partition tolerance) : 即使出现单个组件无法可用,操作依然可以完成 
      网络无法保证百分百可靠,所有分区容错性是一种必然现象
  CP
  AP

参考:
https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html

BASE

   基本可用
   软状态(允许中间状态的存在)-> 最终一致性
   最终一致性(异步消息队列   人工对账    定时任务查询)

什么是分布式事务

    其实就是分布式数据一致性(也就是分布在不同节点上的数据在某个时间或实时达到数据一致)

你可能感兴趣的:(什么是分布式事物)