分布式事务
文章平均质量分 95
小飞哥wzf
这个作者很懒,什么都没留下…
展开
-
TCC-Transaction原理
本文主要介绍TCC的原理,以及从代码的角度上分析如何实现的;不涉及具体使用示例。本文分析的是github中开源项目tcc-transaction。当然github上有多个tcc项目,但是他们原理相近,所以不过多介绍,有兴趣的小伙伴自行阅读源码。1 TCC架构1.1 原理一个完整的业务活动由一个主业务服务与若干从业务服务组成。主业务服务负责发起并完成整个业务活动。从业务服务提供TCC型业务操作。业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在业务活动提交时进行confirm操作原创 2021-05-23 12:57:49 · 1276 阅读 · 0 评论 -
Seata原理
1 Seata架构Seata目前支持四种分布式方案,其整体架构有很多相似之处,这里从整体上介绍方案,具体每种方案见相关博客。1.1 整体架构注:此图来自seata官网TC (Transaction Coordinator) 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (Transaction Manager)事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。RM (Resource Manager)资源管理器:管理分支事务处理的资源,与TC交谈以注册原创 2021-05-23 12:53:44 · 599 阅读 · 3 评论 -
Seata-XA模式 原理
1 XA模式示例示例参考:github上seata-sample业务代码层面和xa完全相同,仅数据库代理层面替换成DataSourceProxyXA即可,更多内容,参考示例。2 架构注:此图来自seata官网。3 源码分析3.1 TM开启全局事务此过程和AT模式一样,使用@GlobalTransactional即可。3.2 RM执行分支事务因为DataSource使用了代理,所以所有DB操作均交个DataSourceProxyXA完成,当执行db操作时,请求将会由ExecuteTempl原创 2021-05-23 12:48:57 · 1231 阅读 · 0 评论 -
Seata-Saga模式 原理
1 Saga模式示例1.1 Saga状态机工具状态机设计组件:seata-saga-statemachine-designer状态机在线画图工具:saga_designer1.2 代码示例github上Seata-sample有完整的示例代码,Seata Saga模式中有此示例的完整介绍和分析。这里仅摘取部分和介绍原理有关的代码进行分析。1.2.1 初始化dbmysql示例:CREATE TABLE IF NOT EXISTS `seata_state_machine_def`(原创 2021-05-23 12:44:50 · 6723 阅读 · 0 评论 -
Seata-TCC模式 原理
1 TCC原理TCC(Try-Confirm-Cancel)将一个事务分成两阶段:Try阶段:尝试锁定资源Confirm阶段:如果Try阶段所有资源均锁定成功,那么执行Confirm阶段,真正的扣除资源。Cancel阶段:如果Try阶段有部分资源锁定失败,那么执行Cancel阶段,回滚Try阶段锁定的资源。注意:除了Try阶段为主动触发外,Confirm/Cancel均有框架从自动发起。TCC系统模型如下所示:从微服务的调用过程上看TCC系统模型如下所示:TCC有多种实现方式,本文仅原创 2021-05-23 12:40:57 · 1655 阅读 · 0 评论 -
Seata-AT模式 原理
1 AT模式示例1.1 代码示例AT模式使用非常简单,这里仅摘取和实现原理相关的部分代码,并结合这些代码进行原理分析。这里的示例摘自github上seata-sample1.1.1 TM系统配置<bean class="io.seata.spring.annotation.GlobalTransactionScanner"> <constructor-arg value="dubbo-demo-app"/> <constructor-arg value=原创 2021-05-23 12:31:58 · 1190 阅读 · 1 评论