Seata

目录

1、分布式事务产生的背景?

2、常见的分布式事务解决方案?

3、什么是Seata?

4、Seata分布式事务框架实现原理?

5、SpringBoot如何整合Seata?

6、Seata和LCN的区别?


1、分布式事务产生的背景?

在传统的单体项目中,多个不同的业务逻辑使用的都是同一个数据源,使用的都是同一个事务管理器,所以不会存在事务问题。
在分布式或者微服务架构中,每个服务都有自己的数据源,使用不同事务管理器,如果A服务去调用B服务,B服务执行失败了,A服务的事务和B服务的事务都会回滚,这时候是不存在事务问题的,但是如果A服务B服务执行成功之后出现异常,A服务的事务会回滚,但是B服务的事务不会回滚,此时就存在分布式事务问题。
(在单体的项目中,有多个不同的数据源,每个数据源中都有自己独立的事务管理器,互不影响,那么这时候也会存在多数据源事务管理:解决方案jta+ atominc

2、常见的分布式事务解决方案?

1、使用MQ
2
、使用LCN
3
、使用Seata
4
2PC3PC

3、什么是Seata?

Seata是阿里巴巴推出的一款用来解决分布式事务问题的框架,他经过天猫双十一的考验,很有可能成为解决分布式事务问题的主流框架

4、Seata分布式事务框架实现原理?

Seata有三个组成部分:事务协调器TC:协调者、事务管理器TM:发起方、资源管理器RM:参与方
1)发起方会向协调者申请一个全局事务id,并保存到ThreadLocal中(为什么要保存到ThreadLocal中?弱引用,线程之间不会发生数据冲突)
2Seata数据源代理发起方和参与方的数据源,将前置镜像和后置镜像写入到undo_log表中,方便后期回滚使用
3)发起方获取全局事务id,通过改写Feign客户端请求头传入全局事务id
4)参与方从请求头中获取全局事务id保存到ThreadLocal中,并把该分支注册到SeataServer中。
5)如果没有出现异常,发起方会通知协调者,协调者通知所有分支,通过全局事务id和本地事务id删除undo_log数据,如果出现异常,通过undo_log逆向生成sql语句并执行,然后删除undo_log语句。如果处理业务逻辑代码超时,也会回滚。

5、SpringBoot如何整合Seata?

一般情况下,学一个知识不需要去学API,学的主要是思想,API会发生变化,思想几乎是不会变的
第一步:引入依赖
第二步:bin下的file文件和registry文件放入到每个项目中,并修改,分组名称要保持一致
第三步:yml配置seata
第四步:引入DataSourceProxy配置文件

6、Seata和LCN的区别?

SeataLCN的思想是一样的,只不过LCN中采用的是假关闭,不会提交或者回滚事务,而Seata中是直接插入数据。两者的区别就是当发起方突然宕机了,LCN会发生死锁,而Seata不会,但是Seata会引起脏读。
LCN实现分布式事务三种方案(模式)LCNTCCTXC
Seata
实现分布式事务四种方案(模式)AT(几乎等于LCNTCCSAGAXA

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值