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

  • 相关阅读:
    《python编程从入门到实践》变量和简单数据类型
    《初学python》
    centos7 关闭防火墙
    记几个学习资源
    servlet-api.jar
    spring 对Map的一种扩展 MultiValueMap
    CPU飚高问题解决
    聊聊数据库优化
    netty的核心组件
    【转】 一个著名的日志系统是怎么设计出来的?
  • 原文地址:https://www.cnblogs.com/tulingxueyuan/p/13299031.html
Copyright © 2020-2023  润新知