分布式事务
文章平均质量分 52
seata源码需要一定的spring基础。
sctttt
源码注释笔记(●ˇ∀ˇ●)
展开
-
Seata TCC模式源码解析
前文已经讲解了AT模式的流程,现在接着看到TCC模式的源码。有了前面的基础,我们直接看到GlobalTransactionScanner类的wrapIfNecessary方法protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) { try { synchronized (PROXYED_SET) { if (PROXYED_S原创 2021-04-30 17:30:19 · 477 阅读 · 1 评论 -
Seata AT模式源码解析(三) ------ 二阶段事务提交和回滚
GlobalTransactionScanner 实现了InitializingBean接口,重写afterPropertiesSet方法完成了TM和RM的初始化,RM的初始化实例化了RmNettyRemotingClient 用于通信,其中TransactionMessageHandler属性接收到TC的提交,回滚的请求,并且响应结果给TC端。public class RMClient { /** * Init. * * @param applicationI原创 2021-04-29 17:42:45 · 801 阅读 · 0 评论 -
Seata AT模式源码解析(二) ------ DataSourceProxy
由于seata需要兼容现有常用的ORM框架,所以直接使用DataSourceProxy实现DataSource接口,在项目中作为数据源对象。@Primary@Beanpublic DataSourceProxy dataSourceProxy(DataSource dataSource) { //持有了目标数据源对象,该DataSourceProxy构造函数,会把RootContext的DEFAULT_BRANCH_TYPE设置为BranchType.AT return new Data原创 2021-04-29 16:15:39 · 786 阅读 · 0 评论 -
Seata AT模式源码解析(一) ------ GlobalTransactionalInterceptor
首先,需要自行了解AT模式的流程,然后要使用seata的话,在pom.xml添加以下内容。 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-seata</artifactId> <version>2.1.0.RELEASE</version> </原创 2021-04-29 10:06:24 · 1068 阅读 · 0 评论 -
分布式事务基于消息中间件实现最终一致性
分布式事务基于消息中间件实现最终一致性举个例子:不同服务不同库的情况下,当我们在a服务的业务表中扣除100元,又要在b服务的业务表中增加100元。解决分布式事务的方案有各种(XA,Seata,TCC等),如果只需要最终一致性,且项目中有使用消息中间件,那么可以借助消息中间件解决首先画张图来梳理下步骤:![在这里插入图片描述](https://img-blog.csdnimg.cn/20201203111930340.png?x-oss-process=image/watermark,type_原创 2020-12-03 15:37:49 · 532 阅读 · 0 评论