![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式事务
vickyhwj
这个作者很懒,什么都没留下…
展开
-
seata tcc如果branch commit失败会怎样?
会不断的重试!如果该分支提交报错,则不会执行globalSession.removeBranch有个定时器默认每隔1秒重试提交事务。原创 2021-08-02 10:46:28 · 1063 阅读 · 2 评论 -
MQ消息最终一致性
https://www.jianshu.com/p/eb571e4065ec原创 2021-05-06 16:17:14 · 60 阅读 · 0 评论 -
seata链路追踪
一开始io.seata.tm.api.TransactionalTemplate#beginTransaction,向seata申请xid,执行完之后,global_table然后执行jdbcTemplate.update("update buy_flow_require set create_org_name=? where id=14034",name);先去执行本地sql,io.seata.rm.datasource.exec.AbstractDMLBaseExecuto...原创 2021-04-24 13:27:10 · 389 阅读 · 0 评论 -
seata性能的一个实践
1.上下游的方法都用到了@Transaction2.没用到@Transaction如果没用到@Transaction,那么每次dml都会向seata发请求申请brand_id,然后锁表,一个事务里面有多个dml,那么就会对seata申请对此brand_id,如果你用了@Transaction,那么就会把一个事务看成一个整体然后仅仅向seata发送一次branch_id的申请。...原创 2021-04-23 21:50:21 · 804 阅读 · 0 评论 -
seata通过feign调试遇到一个坑
此时global_table是有数据的当跳进远程方法接口时看调用者日志原来是Hystrix超时了,调用者抛出异常并且向seata server发起删除global_table操作。下游断点位置找不到global_transaction.再梳理一下:上游为A服务,下游为B服务;A先向seata server注册xid,然后A调用B,此时B执行db操作前停在断点上,结果此时超时了,A抛异常了,向seata server申请回滚,因为此时B停在断点是,还没有向seata..原创 2021-04-15 22:42:09 · 4187 阅读 · 0 评论 -
seata的select for update实现隔离性
另外一个事务进入,因为xid不一样,所以lockable为false换成lock_table的xid就返回true,(这就是可重入的原理)原创 2021-03-16 13:06:24 · 933 阅读 · 0 评论 -
seate与@Transaction的结合
把Spring事务注解注释掉:保留Spring事务注解与没有用到spring事务的区别就是把所有的快照放到一行undo_log里面原创 2021-04-14 09:56:29 · 269 阅读 · 0 评论 -
seata的AbstractUndoExecutor的dataValidationAndGoOn解读
/** * Data validation. * * @param conn the conn * @return return true if data validation is ok and need continue undo, and return false if no need continue undo. * @throws SQLException the sql exception such as has dirty data...原创 2021-04-14 17:54:18 · 531 阅读 · 0 评论