图灵学院 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,或者去图灵官网查看