分布式事务Seata的实现原理。谈谈对Seata的理解。Seata支持的4种分布式事务模式
创始人
2024-06-03 13:00:35
0

1.在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个DML操作,变成了跨进程或者跨数据库的多个事务单元的多个DML操作,而传统的数据库事务无法解决这类的问题,所以就引出了分布式事务的概念。

2.分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,业内常见的解决方法有两种

(1)强一致性,就是所有的事务参与者要么全部成功,要么全部失败,全局事务协调者需要知道每个事务参与者的执行状态,再根据状态来决定数据的提交或者回滚!

(2)最终一致性,也叫弱一致性,也就是多个网络节点的数据允许出现不一致的情况,但是在最终的某个时间点会达成数据一致。基于CAP定理我们可以知道,强一致性方案对于应用的性能和可用性会有影响,所以对于数据一致性要求不高的场景,就会采用最终一致性算法。

3.在分布式事务的实现上,对于强一致性,我们可以通过基于XA协议下的二阶段提交来实现,对于弱一致性,可以基于TCC事务模型、可靠性消息模型等方案来实现。

4.市面上有很多针对这些理论模型实现的分布式事务框架,我们可以在应用中集成这些框架来实现分布式事务。

而Seata就是其中一种,它是阿里开源的分布式事务解决方案,提供了高性能且简单易用的分布式事务服务。

Seata中封装了四种分布式事务模式,分别是:

AT模式:无侵入式的分布式事务解决方案,适合不希望对业务进行改造的场景,但由于需要添加全局事务锁,会影响高并发系统的性能。该模式主要关注多DB访问的数据一致性,也包括多服务下的多DB数据访问一致性问题。AT模式,是一种基于本地事务+二阶段协议来实现的最终数据一致性方案,也是Seata默认的解决方案。

TCC模式:高性能的分布式事务解决方案,适用于对性能要求比较高的场景。该模式主要关注业务拆分,在按照业务横向扩展资源时,解决服务间调用的一致性问题。TCC模式,TCC事务是Try、Confirm、Cancel三个词语的缩写,简单理解就是把一个完整的业务逻辑拆分成三个阶段,然后通过事务管理器在业务逻辑层面根据每个分支事务的执行情况分别调用该业务的Confirm或者Cacel方法。

 

Saga模式:长事务的分布式事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统。Saga 模式一阶段就会提交本地事务,无锁,长流程情况下可以保证性能,多用于渠道层、集成层业务系统,事务参与者可以是其它公司的服务也可以是遗留系统的服务,并且对于无法进行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。

 

XA模式,XA可以认为是一种强一致性的事务解决方法,它利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种 事务模式。

 

5.分布式事务的理论基础

分布式事务无法同时实现CAP模式即 Consistency(一致性)、Availability (可用性)、Partition(分区) 。

如果此时要保证一致性,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。

如果此时要保证可用性,就不能等待网络恢复,之间就会出现数据不一致。

解决思路

BASE理论是对CAP的一种解决思路,包含三个思想:

Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。

Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。

Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

根据BASE理论以及cap实现了两种解决模式

分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论,有两种解决思路:

AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。

CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。

    但不管是哪一种模式,都需要在子系统事务之间互相通讯,协调事务状态,也就是需要一个事务协调者(TC):

6.Seata 的核心组件:

    在 Seata 中主要有以下三种角色,其中 TM 和 RM 是作为 Seata 的客户端与业务系统集成在一起,TC 作为 Seata 的服务端独立部署:

事务协调器(TC):维护全局事务的运行状态,负责协调并驱动全局提交或回滚

事务管理器(TM):事务发起方,控制全局事务的范围,负责开启一个全局事务,并最终发起全局提交或回滚全局的决议

资源管理器(RM):事务参与方,管理本地事务正在处理的资源,负责向 TC 注册本地事务、汇报本地事务状态,接收 TC 的命令来驱动本地事务的提交或回滚

7. 四大模式的对比 

基于CP:XA

基于AP:AT、TCC、SAGA

 

 

相关内容

热门资讯

经典全陪导游词 经典全陪导游词  导游词其主要特点是口语化些,此外还具有知识性、文学性、礼节性等,经典全陪导游词。和...
焦作博爱青天河导游词 焦作博爱青天河导游词  作为一名乐于助人的导游,常常要根据讲解需要编写导游词,导游词是讲解当地的基本...
河南省龙隐导游词 河南省龙隐导游词  作为一位出色的导游人员,往往需要进行导游词编写工作,导游词一般是根据实际的游览景...
长春长影世纪城导游词 长春长影世纪城导游词  作为一名乐于为游客排忧解难的导游,总归要编写导游词,导游词具有形象、生动、具...
阳朔聚龙潭景区导游词 阳朔聚龙潭景区导游词(精选5篇)  作为一名默默奉献的导游,就难以避免地要准备导游词,导游词可以加深...
大屿山导游词 大屿山导游词  大屿山岛是香港特区最大的岛屿,其面积比香港岛大近一倍。位于珠江口外。大屿山地势西南高...
湖南天子山导游词 湖南天子山导游词  导语:导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...
重庆大足石刻导游词 重庆大足石刻导游词(精选11篇)  作为一名专门为游客提供帮助的导游,常常需要准备导游词,导游词事实...
安徽宏村景点导游词介绍 安徽宏村景点导游词介绍  作为一名旅游从业人员,就有可能用到导游词,导游词可以加深游客对景点的印象,...
庐山芦林湖导游词 庐山芦林湖导游词  作为一名导游,编写导游词是必不可少的,导游词具有注重口语化、精简凝练、重点突出的...
北海公园九龙壁的导游词 北海公园九龙壁的导游词范文  作为一名导游,时常要开展导游词准备工作,导游词是导游员在游览时为口头表...
介绍那拉提草原导游词 介绍那拉提草原导游词  那拉提”是蒙古语“太阳”的意思,对于名字的由来,有一个小小的传说。以下是“介...
江西省庐山山南太乙村导游词 江西省庐山山南太乙村导游词  各位游客,大家好!欢迎来到太乙村旅游。  去过庐山的人很多,但去过太乙...
旅游圣地大理苍山洱海导游词 旅游圣地大理苍山洱海导游词  作为一名优秀的旅游从业人员,就有可能用到导游词,导游词可以帮助旅游者欣...
蓬莱阁的导游词 蓬莱阁的导游词精选  尊敬的旅客朋友们,大家好啊!欢迎来到具有“人间仙境”美称的蓬莱阁参观旅游。我是...
断桥残雪导游词 断桥残雪导游词范文  在白堤的尽头,到了断桥,全长1公里的白堤就由此而“断”了。  断桥的名字最早取...
丽江概况导游词 丽江概况导游词(通用5篇)  作为一名专门为游客提供帮助的导游,时常需要编写导游词,导游词作为一种解...
故宫讲解导游词 2022故宫讲解导游词(精选23篇)  作为一位出色的导游人员,通常需要用到导游词来辅助讲解,借助导...