• 【面试普通人VS高手系列】谈谈你对Seata的理解


    很多面试官都喜欢问一些“谈谈你对xxx技术的理解”。

    大家遇到这种问题时,是不是完全不知道从何说起。

    那么我们来看一下,普通人和高手是如何回答这个问题的?

     

    普通人:

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

    实际项目中我没有用过,我记得Seata里面有几种事务模型,有一种AT模式、还有TCC模式。

    然后AT是一种二阶段提交的事务,它是采用的最终一致性来实现数据的一致性。

     

    高手:

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

     

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

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

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

     

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

     

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

     

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

     

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

     

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

    image-20220302110420998

     

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

    Overview of a global transaction

     

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

    Saga模式示意图

     

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

    img

    从这四种模型中不难看出,在不同的业务场景中,我们可以使用Seata的不同事务模型来解决不同业务场景中的分布式事务问题,因此我们可以认为Seata是一个一站式的分布式事务解决方案。

     

    总结

    你是否通过高手的回答找到了这类问题的回答方式呢?

    面试的时候遇到这种宽泛的问题时,先不用慌, 首先自己要有一个回答的思路。

    按照技术的话术,就是先给自己大脑中的知识建立一个索引,然后基于索引来定位你的知识。

    我对于这类问题,建立的索引一般有几个:

    它是什么?

    它能解决什么问题?

    它有哪些特点和优势?

    它的核心原理,为什么能解决这类问题?

    大家对照这几个索引去回答今天的这个面试题,是不是就更清晰了?

    好的,本期的普通人VS高手面试系列就到这里结束了,喜欢的朋友记得一键三连,加个关注。

    我是Mic,一个工作了14年的Java程序员,咱们下篇文章再见。

  • 相关阅读:
    Java Map在遍历过程中删除元素
    Perl语言入门学习读物
    手机上的动态ip流量是算自己的流量吗?
    Windows11安装SQL Server2019操作手册
    位运算详细介绍
    《征服数据结构》块状链表
    【MySQL】表的约束(二)
    QT=> 父界面设置背景图,子界面不受影响解决方案
    paddle学习赛——钢铁目标检测(yolov5、ppyoloe+,Faster-RCNN)
    ECMAScript6 学习笔记
  • 原文地址:https://www.cnblogs.com/mic112/p/16112465.html