- I have searched the issues of this repository and believe that this is not a duplicate.
Ⅰ. Issue Description
现在在 seata-samples 中 tcc 模块下所有测试用例都是在接口上添加 tcc 注解,但是最佳实践好像又不是这样使用的所有有了以下几个问题,希望能得到答复
- feature: TCC mode supports tcc annotation marked on both interface and implementation class #4479 这个pr为了解决什么问题,因为这里是可以在实现类上添加tcc注解了,优化了什么,tcc上的使用有什么变化
- feature: tcc-mode commit and rollback method support
@BusinessActionContextParameter("opId") long opId
#3823 这个pr支持tcc commit/rollback方法属性填充,那针对参数类型为基本类型、List 这种,在commitArgs/RollbackArgs中ClassType填什么呢?
同时官方推荐使用这种方式还是获取上下文自己get(key)的方式呢? - tcc useTCCFence=true开启后,把悬挂/空回滚/幂等问题都解决了吗
- help!!! 1.5.2 TCC模式 try调用超时为什么会产生3个branch_id #4888 issue,rpc框架重试,导致分支事务多次注册这个问题?但是其实我没想明白怎么复现这个问题,我对dubbo不太熟悉
这里提到了最佳实践:
最佳实践->tcc的注解写在provider的service上,并且在provider的controller等位置再调用service之前进行幂等处理
避免进入seata-tcc注解切面进行多次分支事务注册
但是还是需要用户做幂等处理
- springcloud/ springboot 服务之间http调用如何使用tcc?
目前我看源码是在调用方添加@LocalTCC注解,但是我认为跟injvm联系不上。这次我再次困惑@LocalTCC的含义是啥 - 目前添加tcc切面bean的逻辑,我的理解是:
一个在该类上含有@LocalTCC
一个在该类上是referenceFactoryBean
为什么要做这两者的区别?就是为什么referenceFactoryBean不统一添加@LocalTCC统一方式?LocalTCC有啥特殊的含义吗? - 所以能提供一个TCC的最佳实践官方文档吗?
Ⅱ. Describe what happened
If there is an exception, please attach the exception trace:
Just paste your stack trace here!
Ⅲ. Describe what you expected to happen
Ⅳ. How to reproduce it (as minimally and precisely as possible)
- xxx
- xxx
- xxx
Ⅴ. Anything else we need to know?
Ⅵ. Environment:
- JDK version :
- Seata version:
- OS :
- Others:
2条答案
按热度按时间a14dhokn1#
1.没有什么大的变化,还是字面意思,我的理解就是增加了使用的方式
2. @wangliang181230 帮忙看下这块
3.是的
4.由于rpc重试,切面会重进导致了多次注册分支,幂等可以考虑包装一个bean,或者用aop,在进try方法进切面前先进spring的切面,进行幂等处理
5.@LocalTCC 就是本地是个tcc服务,而不是暴露到外部作为一个tcc服务,无论是从哪里调用到一个带有localtcc的服务的对应try方法,都会触发分支注册(rm侧)
6.老逻辑引起的理解困难,未来社区会往localtcc方向去靠,去除单独的dubboreference之类的处理
7.可以与社区一起弄个最佳实际的sample并贡献到seata-samples
jbose2ul2#
第七条现在有了吗,我现在做seata2.0的tcc模式,集成springcloud,是到处找文档