SpringCloud面试题——分布式事务

一:什么是分布式事务?

分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理,这些数据库或应用程序可能分布在不同的物理节点上,甚至可能位于不同的地理位置。在分布式事务中,需要确保所有参与者的事务操作都能够保持一致性,即所有参与者的事务要么全部提交成功,要么全部回滚。

二:常见的分布式事务有哪些?

分布式事务的目的是保证分布式系统中的多个参与方的数据能够保证一致性。即所有参与者,在一次写操作过程中要么都成功,要么都失败。至于这个一致性到底是怎样的一致性,是强一致性、还是最终一致性,不同的分布式事务方案其实达到的效果并不相同。

三:什么是Seata?他有哪几种模式?

Seata是一个阿里开源的分布式事务解决方案(Simple Extensible Autonomous Transaction
Architecture),用于在分布式系统中实现分布式事务。它旨在简化分布式事务的开发和管理,帮助解决分布式系统中的数据一致性问题。
Seata目前支持4种模式,分别是:

  1. AT模式
  2. TCC模式
  3. Saga模式
  4. XA模式

四:seata原理

全局唯一的事务ID+三组件

  1. TC (事务协调者):维护全局和分支事务的状态,负责通知RM执行提交或回滚。
  2. TM(事务管理器):将不同的微服务组合起来一个完成的业务流程,职责是开始全局事务、提交或回滚全局事务。
  3. RM (资源管理器):具体的某个微服务为事务的分支,职责是执行每个分支事务的操作。
    在这里插入图片描述

五:一次分布式事务的大致流程

  1. TM在接收到用户的下单请求后,会先调用TC创建一个全局事务,并且从TC获取到他生成的
    XID
  2. TM开始通过RPC/Restiali调用各个RM,调用过程中需要把XID同时传递过去。
    在这里插入图片描述
  3. RM通过其接收到的XID,将其所管理的资源且被该调用锁使用到的资源注册为一个事务分支
    在这里插入图片描述
  4. 当该请求的调用链全部结束时,TM根据本次调用是否有失败的情况,如果所有调用都成
    功,则决议Commit,如果有超时或者失败,则决议Rollback。
  5. TM将事务的决议结果通知TC,TC将协调所有RM进行事务的二阶段动作,该回滚回滚,该
    提交提交。
    在这里插入图片描述

相关推荐

  1. SpringCloud面试——Nacos

    2023-12-17 02:20:03       34 阅读
  2. SpringCloud面试——Nacos

    2023-12-17 02:20:03       13 阅读
  3. SpringCloud面试——Sentinel

    2023-12-17 02:20:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 02:20:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 02:20:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 02:20:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 02:20:03       20 阅读

热门阅读

  1. ES的字段更改字段类型

    2023-12-17 02:20:03       37 阅读
  2. springBoot使用threadPoolTaskExecutor多线程

    2023-12-17 02:20:03       35 阅读
  3. spring 笔记二 spring配置数据源和整合测试功能

    2023-12-17 02:20:03       31 阅读
  4. Springboot Minio最新版大文件下载

    2023-12-17 02:20:03       45 阅读
  5. C 标准库 - <string.h>

    2023-12-17 02:20:03       31 阅读
  6. echarts 柱形图、折线图点击事件

    2023-12-17 02:20:03       34 阅读
  7. Docker笔记:简单部署 nodejs 项目和 golang 项目

    2023-12-17 02:20:03       34 阅读
  8. Python中的名称空间和作用域

    2023-12-17 02:20:03       38 阅读
  9. NLP中的Seq2Seq与attention注意力机制

    2023-12-17 02:20:03       38 阅读
  10. Unity项目里Log系统该怎么设计

    2023-12-17 02:20:03       30 阅读
  11. docker配置容器内访问主机服务

    2023-12-17 02:20:03       40 阅读
  12. axios+echarts

    2023-12-17 02:20:03       30 阅读
  13. react受控组件和非受控组件区别

    2023-12-17 02:20:03       37 阅读
  14. 大语言模型续写completions

    2023-12-17 02:20:03       40 阅读