2PC只能应用于两个事务参与者的场景 , 而XA可以应用于多个事务参与者的场景,具体如图所示:
文章插图
图片
XA 定义了一组接口:
- XA资源管理器(XA Resource Manager,RM):用于管理分布式事务的资源,如数据库、消息队列等;
- XA事务管理器(XA Transaction Manager,TM):用于协调各个资源管理器的事务处理;
- XA接口:XA接口允许应用程序参与到分布式事务的协调中,包括开始、提交或回滚事务等操作;
- 应用程序通过XA接口开始一个分布式事务,XA事务管理器为该事务分配一个唯一的全局事务ID;
- 应用程序使用XA接口将某些操作注册为分布式事务的一部分,这些操作可以涉及多个XA资源管理器;
- 当应用程序执行到提交事务的代码时,XA事务管理器先协调各个XA资源管理器,检查这些资源管理器是否都能够提交事务;
- 如果所有的资源管理器都能够提交事务,则XA事务管理器向各个资源管理器发送提交事务的请求,并等待它们的响应;
- 如果其中有任何一个资源管理器不能提交事务,则XA事务管理器向各个资源管理器发送回滚事务的请求,并等待它们的响应;
- 当所有的资源管理器都响应提交或回滚事务的请求后 , XA事务管理器将事务的状态(提交或回滚)通知给应用程序,并释放资源 。
2.3. TCCTCC 是实现分布式事务解决方案的一种有效方法 , 更是真正应用于实际工作的一大解决方案 。
文章插图
图片
TCC (try-confirm-cancel) 是一种分布式事务解决方案,它将一个分布式事务拆分成三个过程:
- Try 操作:尝试执行分布式事务中的操作,检查所有参与方是否准备好执行事务 。如果准备好,则锁定资源,等待确认或取消操作;
- Confirm 操作:确认执行分布式事务中的操作,提交所有参与方的操作 。如果有任何错误,则回滚所有操作并释放锁定的资源;
- Cancel 操作:取消执行分布式事务中的操作 , 回滚所有参与方的操作并释放锁定的资源;
- 应用程序向协调者请求分布式事务,并传输所有需要执行的操作;
- 协调者根据 TCC 的分布式事务处理策略创建一个唯一的分布式事务 ID,并将它分配给每个参与方;
- 各参与方执行 Try 操作,并锁定需要访问的资源;
- 协调者检查所有参与方是否准备好执行操作,如果所有参与方都准备好,则进入 Confirm 阶段;
- Confirm 阶段中 , 各参与方确认执行操作,并将结果提交给协调者;
- 如果有任何错误 , 协调者将回滚所有操作并释放锁定的资源 。否则,所有参与方之间的事务将得到确认执行 , 释放资源并关闭事务;
- 如果任何参与方在 Try 阶段失败,则进入 Cancel 阶段;
- Cancel 阶段中,各参与方撤销所有操作并释放锁定的资源;
- 协调者记录每个阶段的操作,以便处理异常情况;
2.4. 事务一致性本质看了不少一致性解决方案,不知道有没有发现一些规律?
核心组件基本一致:
- 应用程序:简单理解为开发的应用系统 , 借助事务管理器和资源管理的的能力,完成事务一致性保障;
- 事务管理器:事务的协调者,接收应用程序的请求 , 对多个资源管理器进行协调,共同完成正向补偿和逆向补偿;
推荐阅读
- 当44岁的胡杏儿和张雨绮娜然同框,才彻底明白,港女的保养真绝
- 疯马秀“审判”后续:张嘉倪,杨颖或遭软封杀,Lisa彻底凉凉!
- 首位90后女主播登《新闻联播》,看完她的履历后,我彻底服了!
- 谢贤公开与张柏芝关系,遮羞布彻底被揭,谢霆锋得知后连忙澄清
- 安卓怎么彻底删除微信聊天记录 怎么彻底删除微信聊天记录
- 终于处罚了!Lisa被封号,杨颖张嘉倪被禁言,星光之路彻底是凉凉了
- 一个“假向太”,彻底揭开了向家的豪门真相,难怪郭碧婷会退圈!
- Lisa风波迎来大结局,3女星彻底沦为弃子,LV3公子成唯一聪明人
- 家里有老鼠怎么能彻底消灭 老鼠对粘鼠板有记忆吗
- baby彻底凉凉?被曝向黄晓明求救,准备跑路出国抛售5亿豪宅?