Seata

Seata(Simple Extensible Autonomous Transaction Architecture) 。这是一套分布式事务解决方案,意在解决开发人员遇到的分布式事务各方面的难题。

Seata 的设计目标是对业务无侵入,因此它是从业务无侵入的两阶段提交(全局事务)着手,在传统的两阶段上进行改进他把一个分布式事务理解成一个包含了若干分支事务的全局事务而全局事务的职责是协调它管理的分支事务达成一致性,要么一起成功提交,要么一起失败回滚

分布式事务强一致性:所有事务的参与要么全部成功要么全部失败。 通过每个事务执行状态来判定是否提交数据。 可以通过基于XA协议下的二阶段提交来实现。
分布式事务最终一致性(弱一致性):多个网络节点间,允许出现一个不一致的情况,但在最终的某个时间点达成最终一致性。通过TCC事务模型和可靠性消息模型等方案去实现。

Seate 就是基于以上协议实现的一种分布式框架。
它有哪些优点和特征?
优点:开源的,高性能,简单易用。

为什么能解决这类问题?
因为Seate提供了四种分布式事务解决方案。
AT模式(默认): 基于本地事务+二阶段协议来实现的最终数据一致性解决方案。
TCC模式(Try,Confirm,Cancel):把一个完整的业务逻辑拆分成三个阶段,然后通过事务管理器进行在每个分支的业务逻辑层面,根据分支事务的执行情况,分别调用业务的confirm 和 cancel 方法。

Saga模式:长事务解决方案,在业务流程的参与者都要提交本地事务,当出现任何一个参与者失败的情况,通过补偿方案,把之前成功的事务进行回滚。
XA模式:强一致性事务,利用数据库,消息服务对XA协议的支持,以XA协议的机制来管理分支事务的一种事务模型。

 Seata 中存在几种重要角色:

  • TC(Transaction Coordinator):事务协调者。管理全局的分支事务的状态,用于全局性事务的提交和回滚。
  • TM(Transaction Manager):事务管理者。用于开启、提交或回滚事务。
  • RM(Resource Manager):资源管理器。用于分支事务上的资源管理,向 TC 注册分支事务,上报分支事务的状态,接收 TC 的命令来提交或者回滚分支事务。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-03-08 14:55  Nausicaa0505  阅读(100)  评论(0编辑  收藏  举报