Seataf分布式事务的使用

一、事务的四大特征(面试题)

  1. 原子性:一个事务是不可分割的,要不都做,要不都不做
  2. 一致性:事务必须是使数据库从一个一致性变成另一个一致性状态
  3. 隔离性:一个事务的执行不被其他事务干扰,分为四个等级:读未提交、读已提交、可重复读、串行化
  4. 持久性:事务一旦提交,对数据库的数据改变是永久性的

二、事务的实现

2.1、本地事务

本地事务是在大多数情况下应用只需要操作单一的数据库

2.2 分布式事务

分布式事务是为了保证不同资源服务器的数据一致性

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

  1. XA两段提交(低效率)-分布式事务解决方案
  2. TCC三段提交(2段,高效率[不推荐(补偿代码)])
  3. 本地消息(MQ+Table) 最终一致性
  4. 事务消息(RocketMQ) (唯一不同的就是将本地消息表存在了MQ内部)
  5. Seata(alibaba) (推荐)

redo log 持久性
redo一般用于恢复已确认但未写入数据库的数据,记录的是数据修改后的值。
undo log 一致性,原子性
undo一般用于事务的取消与回滚,记录的是数据修改前的值;

四、两阶段提交与三阶段提交的区别(面试题)

两阶段中有预提交阶段和提交阶段
三阶段中有准备阶段(CanCommit)、预提交阶段(PreCommit)、提交阶段(DoCommit)
三阶段与二阶段相比,降低了阻塞时长
两个阶段都不能保证数据绝对的一致性,可以人工干预通过脚本自动补偿差异的信息

五、TCC

TCC的执行流程

  1. 第一阶段,Try,业务系统做检测并且预留资源
  2. 第二阶段,根据第一阶段结果决定执行confirm还是cancel
    connfirm:执行真正的业务
    cancel:释放Try阶段的预留资源
    请添加图片描述
    优点:性能提升,数据最终一致性,可靠性
    缺点:业务耦合度较高,提高开发成本

六、saga

Saga事务核心就是将长事务拆分为多个本地短事务并依次正常提交

saga的恢复策略

(1)向后恢复(backward recovery)
当事务执行失败后,补偿所有已完成的事务,如请添加图片描述
(2)向前恢复(forwward recovery)
执行不通过的事务,会尝试重试事务
请添加图片描述

七、Seate分布式事务

Seate的三大角色

  1. TC(Transaction Coordinator)事务协调者:维护全局和分支事务状态,驱动全局事务提交或回滚
  2. TM(Transaction Manager)事务管理器:定义全局事务范围:开始、提交或回滚全局事务
  3. RM(Resource Manager)资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
    TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端
    有三个主要的数据库表
    global_table 就是存储的全局事务信息
    branch_table 短事务相关信息
    lock_table 当前锁的行信息
    请添加图片描述
  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值