美文网首页
Seata- TCC

Seata- TCC

作者: 飞哈飞 | 来源:发表于2021-09-30 12:12 被阅读0次

    1 dubbo接口用twophasebuisseness标注一组tcc接口时,调用方和被调用方都会有接口,如何识别服务引入的接口是调用方调用的引入还是实际的TCC执行者?

    dubbo应用可以通过判断该接口是referenceBean还是serviceBean可以判断

    可通过SPI扩展

    具体处理类为RemotingParser的isReference和isService方法

    isService就会上报RM资源信息

    isReference就会设置代理,添加TccActionInterceptor

    2  何时上报Resouce?

    在执行GlobalScanner,调用TCCBeanParserUtils.isTccAutoProxy至DefaultRemotingParser.parserRemotingServiceInfo,判断是否为isService以及twoPhaseBusinessAction注解来上报Resource

    3 globalTransactionScanner启动时作用?

    globalTransactionScanner是AbstractAutoProxyCreator子类,在postProcessAfterInitialization阶段进行再处理

    1 service Bean上报Resource

    2 referenceBean记录remotingDesc,等调用referenceBean.get()实际生成代理Invoker类的时候再加上TCC拦截器

    3 globalTransactional注解和GlobalLock注解增加globalTransaction拦截器

    4 LocalTcc如何起作用?

    LocalTcc可直接在TM测实现TCC资源,那么localTcc类属于TM本地调用,既需要添加TCC拦截器也需要上报资源,因此它对应的isService和isReference都会为true

    5 seata-server如何高可用?

    1 seata-server支持文件,redis, mysql多种存储,选择mysql可达到高可用特性

    2 seata 客服端连接通过注册中心获取server节点地址,在发送消息时进行loadBalance连接

    6 为何不直接AOP拦截twoPhaseBussinessAction ?

    需要对reference和service执行不同逻辑

    含有初始化上报RM的功能

    相关文章

      网友评论

          本文标题:Seata- TCC

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