三、强一致性介绍

3.1 基本理解

相关特点
强⼀致性解决⽅案要求在任何时间点,任何时刻查询,参与全局事务的各个节点的数据都必须是⼀致的

强⼀致性解决⽅案在实际⽣产环境中 银⾏系统⽤的⽐较多,因为银⾏对⾦额数据的⼀致性要求⽐较⾼
⽽在其他对⼀致性要求不是特别⾼的系统中 很少会被⽤到

解决思想

  • DTP模型
  • 2PC⼆阶段提交模型



3.2 DTP模型

DTP模型是X/Open组织定义的⼀套分布式事务标准, 这个标准定义了解决分布式事务的规范和API接⼝,由各地⼚商实现。

DTP模型提出三⼤组件
1:应⽤程序(AP) : 应⽤程序就是我们的项⽬ 控制着事务的开始和结束
2:资源管理器(RM): 资源管理器就是指事务的参与者 在实际中就是我们的数据库
3:事务管理器™: 负责管理协调事务 负责分配事务的唯⼀标识

DTP模型,规范了分布式事务的模型设计(三⼤组件)



3.3 落地协议XA

XA则规范了TM与RM之间的通信接⼝,在TM与多个RM之间形成⼀个双向通信桥梁 是数据库级别的规范

规范如下
xa_start 开启⼀个分⽀事务
xa_end 取消分⽀事务
xa_prepare 询问资源管理器是否做好了提交事务的准备
xa_commit 通知资源管理器提交事务
xa_rollback 通知事务管理器回滚事务
xa_recover 列出需要恢复的事务分⽀

mysql的innoDB引擎是⽀持XA的,是基于XA的2阶段提交,可以使⽤show engines \G查看

具体语法(xid表示事务唯⼀标识符)
1: 开启XA事务
xa start xid
2: 结束XA事务
xa end xid
3: 准备提交XA事务
xa prepare xid
4: 提交xa事务
xa commit xid
5: 回滚xa事务
xa rollback xid



3.4 ⼆阶段提交模型

是基于 DTP模型的
表示在规范的情况下,事务的完成分为2个阶段
1:prepare阶段
2:Commit rollback阶段

第⼀个阶段: 资源服务器执⾏xa prepare。
事务管理器通知资源管理器,让资源管理器为提交事务做准备,资源管理器收到消息后,执⾏sql,执⾏本地事务,执⾏完毕之后不会提交事务,而是向事务管理器说我执⾏sql没有出现问题,已经准备好了提交

第⼆个阶段:
如果各个资源管理器都执⾏成功,事务管理器则向各个资源管理器发送提交事务的请求,各个资源管理器收到请求之后 执⾏本地事务提交然后释放资源。

如果有资源管理器返回的是失败 事务管理器则向各个资源管理器发送回滚事务的请求,各个资源管理器收到请求之后 执⾏事务回滚 然后释放资源

成功模型图
三、强一致性介绍-LMLPHP

失败模型图
三、强一致性介绍-LMLPHP



3.5 ⼆阶段提交的问题

三、强一致性介绍-LMLPHP



3.6 navicat操作xa

三、强一致性介绍-LMLPHP

03-31 15:25