是什么?
开源的分布式事务解决方案-------@GlobalTransactional
组成?
TC:事务协调器,管理全局的分支事务的状态,用于全局性事务的提交和回滚。
TM:事务管理器,用于开启、提交或者回滚全局事务。
RM:资源管理器,用于分支事务上的资源管理,向TC注册分支事务,上报分支事务的状态,接受TC的命令来提交或者回滚分支事务。
执行流程?
1.TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID。
2.XID在微服务调用链路的上下文之间传播。
3.RM向TC注册分支事务,将其纳入XID对应全局事务的管辖。
4.TM向TC发起针对XID的全局提交或者回滚决议。
5.TC调度XID下管辖的全部分支事务完成提交或者回滚请求。
默认支持的AT模式,分为2个阶段?
1.一阶段,拦截到业务SQL,执行SQL之前保存一份原始数据(before image);执行SQL之后保存一份最新数据(after image)。最后生成行锁,保证了一阶段操作原子性。
2.二阶段,如果是顺利提交的话,将一阶段保存的快照数据和行锁删除。
3.二阶段,如果是回滚的话,还原原始数据;但是还原之前要校验脏写,对比数据库当前数据和after image是否一致,一致就可以还原数据,不一致说明有脏写,需要转人工处理。