谈谈你对Seata的理解

Seata是用来解决分布式事务问题的框架。是阿里开源的中间件。

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

2.分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,

业内常见的解决方法有两种

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

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

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

4.市面上有很多针对这些理论模型实现的分布式事务框架,我们可以在应用中集成这些框架来实现分布式事务。而Seata就是其中一种,它是阿里开源的分布式事务解决方案,提供了高性能且简单易用的分布式事务服务。Seata中封装了四种分布式事务模式,分别是:

AT模式,是一种基于本地事务+二阶段协议来实现的最终数据一致性方案,也是Seata默认的解决方案

TCC模式,TCC事务是Try、Confirm、Cancel三个词语的缩写,简单理解就是把一个完整的业务逻辑拆分成三个阶段,然后通过事务管理器在业务逻辑层面根据每个分支事务的执行情况分别调用该业务的Confirm或者Cacel方法。

Saga模式,Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者。

XA模式,XA可以认为是一种强一致性的事务解决方法,它利用事务资源(数据库、消息服务等)对XA协议的支持,以XA协议的机制来管理分支事务的一种事务模式。从这四种模型中不难看出,在不同的业务场景中,我们可以使用Seata的不同事务模型来解决不同业务场景中的分布式事务问题,因此我们可以认为Seata是一个一站式的分布式事务解决方案。

相关推荐

  1. 谈谈Seata理解

    2024-02-22 05:20:02       33 阅读
  2. 谈谈 ES6 理解

    2024-02-22 05:20:02       15 阅读
  3. 谈谈线程安全理解

    2024-02-22 05:20:02       38 阅读
  4. 【面试题】谈谈SpringBoot理解

    2024-02-22 05:20:02       16 阅读
  5. 什么是 RESTful API?谈谈理解

    2024-02-22 05:20:02       10 阅读
  6. 一线大厂面试真题——谈谈ES理解

    2024-02-22 05:20:02       26 阅读
  7. 谈谈分布式服务器理解

    2024-02-22 05:20:02       20 阅读
  8. seataseata.tx-service-group理解

    2024-02-22 05:20:02       12 阅读

最近更新

  1. 专业课笔记——(第十二章:文件的读写)

    2024-02-22 05:20:02       0 阅读
  2. lvs集群

    2024-02-22 05:20:02       0 阅读
  3. Perl 语言入门学习

    2024-02-22 05:20:02       0 阅读
  4. 大模型/NLP/算法面试题总结3——BERT和T5的区别?

    2024-02-22 05:20:02       1 阅读
  5. 单元测试核心类备忘

    2024-02-22 05:20:02       1 阅读

热门阅读

  1. linux 测试网络速率

    2024-02-22 05:20:02       30 阅读
  2. mysql:给查询的数据增加序号1,2,3...

    2024-02-22 05:20:02       31 阅读
  3. git学习

    git学习

    2024-02-22 05:20:02      34 阅读
  4. 回溯法去重需要先排序

    2024-02-22 05:20:02       34 阅读
  5. MySQL中varchar 和 char的区别

    2024-02-22 05:20:02       31 阅读
  6. [AIGC] JVM内存结构中的方法区主要存储哪些信息?

    2024-02-22 05:20:02       29 阅读
  7. hbuilder运行不了php文件是什么原因?

    2024-02-22 05:20:02       30 阅读
  8. 设计模式-面试题

    2024-02-22 05:20:02       36 阅读
  9. Maya监听 DAG events

    2024-02-22 05:20:02       32 阅读