分布式事务模型( 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介绍
其中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里面说明两阶段提交的协议
第一阶段:准备阶段
事务管理器通知资源管理器准备分支事务,资源管理器告知事务管理器准备结果
第二阶段:提交阶段
事务管理器通知资源管理器提交分支事务,资源管理器告知事务管理器结果
参考: 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
基本可用
软状态(允许中间状态的存在)-> 最终一致性
最终一致性(异步消息队列 人工对账 定时任务查询)
什么是分布式事务
其实就是分布式数据一致性(也就是分布在不同节点上的数据在某个时间或实时达到数据一致)