三、强一致性介绍
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没有出现问题,已经准备好了提交
第⼆个阶段:
如果各个资源管理器都执⾏成功,事务管理器则向各个资源管理器发送提交事务的请求,各个资源管理器收到请求之后 执⾏本地事务提交然后释放资源。
如果有资源管理器返回的是失败 事务管理器则向各个资源管理器发送回滚事务的请求,各个资源管理器收到请求之后 执⾏事务回滚 然后释放资源
成功模型图
失败模型图