当前位置: 首页 > article >正文

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
    请添加图片描述

http://www.kler.cn/news/290485.html

相关文章:

  • 坐牢第三十四天(c++)
  • WordPress自适应美图网站整站打包源码
  • Docker镜像中的源替换为国内源
  • C/C++:函数指针
  • SpringBoot3集成Spring Authorization Server实现SSO单点登录
  • uniapp小程序实现横屏手写签名
  • 宠物智能家居监测器的融合
  • LeetCode 606.根据二叉树创建字符串
  • 开源vscode AI插件
  • 什么是基于云的 SIEM
  • MuseTalk模型构建指南
  • css改变鼠标样式
  • 论文速读|BiGym:一款基于演示的移动双手操作机器人基准
  • IO进程练习:请在linux 利用c语言编程实现两个线程按照顺序依次输出”ABABABAB......“
  • pdf转cad软件,5款快速上手转换软件分享
  • vue el-tree主键id重复 添加自增id 以及原相同节点同步勾选 同步操作
  • 在Ubuntu上使用apt工具安装RabbitMQ
  • 单链表的问题(2)
  • NCBI-get-GCFIDs_fast.py
  • 基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
  • 戴尔科技领涨市场,AI服务器需求成关键驱动力
  • Error when attempting to add data source to Azure OpenAI api
  • uniapp css样式盒子上面的箭头样式
  • ElasticSearch学习笔记(四)分页、高亮、RestClient查询文档
  • 20240904日报
  • C#如何查看/写入日志到Windows事件查看器
  • c++学习笔记(5)
  • .gitignore 修改问题
  • 力扣151.反转字符串中的单词
  • 输电线路分布式故障诊断系统:分布式智慧网络的构建