java架构师学习路线-教你如何解决分布式事务系统解决方案

图灵学院 java架构师学习路线

分布式事务系统解决方案

整体架构

系统分为三种角色:

  • 客户端

    客户端通过事务协调器开启/提交分布式事务,通过资源管理器执行业务

  • 资源管理器

    资源管理器(主要是数据库系统、消息系统等)负责具体的资源操作,记录必要的事务日志并将执行状态汇报给事务协调器

  • 事务协调器

    事务协调器负责分布式事务的推进,为客户端发起的分布式事务请求分配全局唯一的事务ID,并记录资源管理器提交的事务分支的状态,最终负责全局事务的提交或回滚

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

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

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

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

image.png

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

image.png

系统的结构

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

image.png

系统时序图

image.png

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

  • XA依赖于数据库的XA接口

  • XA在第一阶段没有提交本地事务,而事务中间件立即执行并可见

  • XA在第二阶段提交各分支事务,而事务中间件清理各分支事务的Undo/Redo日志

  • XA依赖于数据库的Rollback接口来回滚事务,而事务中间件通过Undo/Redo日志来实现分支事务的回滚

尽管Java架构师学习路线已经分享给大家,但有多少学员能认真的去践行,这个就难说了。互联网寒冬已经到来,作为程序员,更应在此时提高自己,有着更高远的追求。

篇幅有限,如果需要更详细的java架构师学习路线资料可加博主qq:1993712276,或者去图灵官网查看

原文地址:https://www.cnblogs.com/tulingxueyuan/p/13299031.html