【图灵学院】教你如何解决分布式事务系统解决方案

分布式事务系统解决方案

整体架构

系统分为三种角色:

  • 客户端客户端通过事务协调器开启/提交分布式事务,通过资源管理器执行业务
  • 资源管理器资源管理器(主要是数据库系统、消息系统等)负责具体的资源操作,记录必要的事务日志并将执行状态汇报给事务协调器
  • 事务协调器事务协调器负责分布式事务的推进,为客户端发起的分布式事务请求分配全局唯一的事务ID,并记录资源管理器提交的事务分支的状态,最终负责全局事务的提交或回滚

分布式事务系统通过两阶段提交方式进行分布式事务推进。

1)客户端向事务协调器注册全局事务作为一阶段的开启的标记;

2)分布式事务内的每一次资源(DB或消息)操作,均通过资源管理器进行,资源管理器向事务协调器注册一个事务分支;

3)客户端通知事务协调器进行全局提交/全局回滚作为一阶段完成的标记

分布式事务的二阶段由事务协调器驱动,驱动所有事务分支执行提交或回滚操作,一旦确定某个分布式事务提交或回滚,则不断重试所有事务分支,直到完成整个分布式事务提交或回滚

系统的结构

需要提供提供多种资源器支持,在接入层,服务化框架自动加入全局事务;在资源管理层,需要提供数据库分库分表组件及支持事务消息的消息系统,如:RabbitMQ、RocketMQ等

系统时序图

与XA两阶段提交的不同之处

  • XA依赖于数据库的XA接口
  • XA在第一阶段没有提交本地事务,而事务中间件立即执行并可见
  • XA在第二阶段提交各分支事务,而事务中间件清理各分支事务的Undo/Redo日志
  • XA依赖于数据库的Rollback接口来回滚事务,而事务中间件通过Undo/Redo日志来实现分支事务的回滚

Java架构师教程免费试听地址:https://vip.tulingxueyuan.cn/page/1690373