LCN-核心源码分析

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2021-09-30 06:55 被阅读0次

    上一篇 <<<SpringBoot整合LCN
    下一篇 >>>LCN-集群模式介绍


    订单服务和库存服务交互图

    执行步骤说明

    a、使用@LcnTransaction注解会走到AOP类TransactionAspect
    b、发起方会创建事务组ID,并同步到协调者管理器中,开启事务并执行具体的业务操作
    c、如果业务操作里含有feign的请求,则重写feign的拦截器FeignTracingTransmitter,将组ID信息写到头部
    d、参与方有拦截器SpringTracingApplier从请求头中获取事务分组ID写到ThreadLocal中。
    e、参与方也会使用@LcnTransaction注解会走到AOP类TransactionAspect
    f、参与方有了事务组ID后,会加入到当前组中,并通知给协调者,业务执行完毕后会进行假关闭
    g、当发起方和参与方都执行完毕后,或中间有回滚时,发起方通知协调者进行全组的回滚或提交

    LcnTransaction注解思维导图

    表格说明

    发起方 参与方
    类名 LcnStartingTransaction LcnRunningTransaction
    业务前置方法
    preBusinessCode
    // 创建分组 createGroup
    //设置代理makeProxy();
    //加入代理后面假关闭 makeProxy();
    onBusinessCodeError //设置失败
    DTXLocalContext.cur().setSysTransactionState(0);
    //设置失败
    transactionCleanTemplate.clean(info.getGroupId(), info.getUnitId(), info.getTransactionType(), 0);
    onBusinessCodeSuccess //设置成功,事务提交
    DTXLocalContext.cur().setSysTransactionState(1);
    //当前成功,设置假关闭
    transactionControlTemplate.notifyGroup(
    info.getGroupId(), info.getUnitId(), info.getTransactionType(),
    DTXLocalContext.transactionState(globalContext.dtxState(info.getGroupId())));
    postBusinessCode //发起方才有权限通知事务提交或回滚
    notifyGroup(globalContext.dtxState(groupId))
    -

    推荐阅读:
    <<<分布式事务产生的背景
    <<<解决分布式事务的核心思路
    <<<柔性事务和刚性事务(ACID)
    <<<CAP理论简单概况
    <<<Base理论核心思想
    <<<一致性协议--XA接口
    <<<一致性协议--Jta规范
    <<<一致性协议--2PC提交协议
    <<<一致性协议--3PC提交协议
    <<<2PC与3PC协议的提交区别
    <<<主流的分布式事务解决框架
    <<<LCN-框架介绍
    <<<LCN-实现原理剖析
    <<<LCN-事务协调者(TM)安装启动
    <<<SpringBoot整合LCN
    <<<LCN-集群模式介绍
    <<<Seata-框架介绍
    <<<Seata原理实现/执行流程/生命周期
    <<<Seata-TM执行时突然宕机了会造成什么问题
    <<<Seata-核心源码分析
    <<<SpringBoot整合Seata
    <<<Seata与Lcn的区别

    相关文章

      网友评论

        本文标题:LCN-核心源码分析

        本文链接:https://www.haomeiwen.com/subject/tdkrwltx.html