Seata- TCC

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的功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容