分布式事务
本地事务————操作单一数据库————数据库支持提供
分布式事务————一个业务横跨多个服务,操作多个数据库————保证不同资源服务器的数据一致性
典型分布式事务场景:
1.跨库事务:某个功能需要操作多个库
2.分库分表: 一个库数据量比较大或预期未来数据量比较大,进行水平拆分,也就是分库分表。(保证两个库要不都成功,要不都失败)
数据库中渐渐都面临分布式事务问题。
3.服务化(SOA) 微服务框架 业务复杂 既考虑事务又要考虑性能
保证微服务对多个数据库的操作要不都成功,要不都失败。
解决方法:X/open DTP模型与XA规范
一.DTP模型
1.构成DTP模型的五个基本元素:应用程序(Application Progeam,简称AP)
资源管理器(Resource Manager,简称RM)
事务管理器(Transaction Manager,简称TM)
通信资源管理器(Commurication Resoutce Manager,简称CRM)
通信协议(Communication Protocol,简称cp)
2.模型实例
一个DTP模型实例,至少有三个部分:AP、RMS、TM
服务化事务DTP模型:
解决方案:每个模型中,额外加入一个通信资源管理器CRM。
两个模型采用同一个事务管理器(TM)
CRM:具备基本通信能力,具备事务传播能力
全局事务树形结构,当一个TM中有在多模型实例时,会形成一种树形调用关系。
发起事务的模型实例称之为root节点或事务发起者
其他模型——事务参与者——执行自己的事务分支
按模型调用关系分:调用方——上有节点 被调用方——下游节点