常见分布式事务解决方案

news2024/10/3 10:42:46
分布式事务
就是指事务的参与者、支持事务的服务器、资源服务器以及事务
管理器分别位于不同的分布式系统的不同节点之上。简单来说,分布式事务指
的就是分布式系统中的事务,它的存在就是为了保证不同数据库节点的数据一
致性。
聊到分布式事务,大家记得这两个理论哈: CAP 理论 和 BASE 理论
分布式事务的几种解决方案:
  • 2PC(二阶段提交)方案、3PC
  • TCCTryConfirmCancel
  • 本地消息表
  • 最大努力通知
  • seata
2PC( 二阶段提交 ) 方案
2PC ,即两阶段提交,它将分布式事务的提交拆分为 2 个阶段: prepare
commit/rollback ,即准备阶段和提交执行阶段。在 prepare 准备阶段需要等待
所有参与子事务的反馈,因此可能造成数据库资源锁定时间过长,不适合并发 高以及子事务生命周长较长的业务场景。并且协调者宕机,所有的参与者都收
不到提交或回滚指令。
3PC
两阶段提交分别是: CanCommit PreCommit doCommit ,这里不再详述。 3PC
利用超时机制解决了 2PC 的同步阻塞问题,避免资源被永久锁定,进一步加强
了整个事务过程的可靠性。但是 3PC 同样无法应对类似的宕机问题,只不过出
现多数据源中数据不一致问题的概率更小。
TCC
TCC 采用了补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应
的确认和补偿(撤销)操作。它分为三个阶段: Try-Confirm-Cancel
try 阶段:尝试去执行,完成所有业务的一致性检查,预留必须的业务资源。
Confirm 阶段:该阶段对业务进行确认提交,不做任何检查,因为 try 阶段已经检
查过了,默认 Confirm 阶段是不会出错的。
Cancel 阶段:若业务执行失败,则进入该阶段,它会释放 try 阶段占用的所有业
务资源,并回滚 Confirm 阶段执行的所有操作。
TCC 方案让应用可以自定义数据库操作的粒度,降低了锁冲突,可以提升性能。
但是应用侵入性强, try confirm cancel 三个阶段都需要业务逻辑实现。
本地消息表
ebay 最初提出本地消息表这个方案,来解决分布式事务问题。业界目前使用
这种方案是比较多的,它的核心思想就是将分布式事务拆分成本地事务进行处
理。可以看一下基本的实现流程图:
最大努力通知
最大努力通知方案的目标,就是发起通知方通过一定的机制,最大努力将业务
处理结果通知到接收方。

 

 

seata
Saga 模式是 Seata 提供的长事务解决方案。核心思想是将长事务拆分为多个
本地短事务,由 Saga 事务协调器协调,如果正常结束那就正常完成,如果某
个步骤失败,则根据相反顺序一次调用补偿操作。 Saga 的并发度高,但是一致性弱,对于转账,可能发生用户已扣款,最后转
账又失败的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GIS工具maptalks开发手册(二)01——渲染点、文字和图片

GIS工具maptalks开发手册(二)01——渲染点、文字和图片 1、渲染点 效果 2、渲染文字 效果 3、渲染图片 效果 4.1、html单页面 <!DOCTYPE html> <html> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-wi…

【人工智能与机器学习】——K近邻(KNN)与模型选择(学习笔记)

&#x1f4d6; 前言&#xff1a;人们常常说&#xff0c;“近朱者赤&#xff0c;近墨者黑“&#xff0c;”物以类聚&#xff0c;人以群分”&#xff0c;&#xff0c;我们想考察一个家庭的经济状况&#xff0c;可以问问住在哪里。如果家住在广州珠江新城&#xff0c;经济状况一定…

Unity的机器学习工具包ML-Agents

官方&#xff1a;Unity ML-Agents深度学习工具包&#xff5c;Unity中国官网 | Unity中国官网 Github下载链接&#xff1a;https://github.com/Unity-Technologies/ml-agents ML-Agents是游戏引擎Unity3D中的一个插件&#xff0c;也就是说&#xff0c;这个软件的主业是用来开发…

初始操作系统之进程

文章目录一、什么是操作系统二、进程PCB内存管理一、什么是操作系统 操作系统*&#xff08;英语&#xff1a;Operating System&#xff0c;缩写&#xff1a;OS&#xff09;*是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统…

Mybatis的BindingException异常产生原因及解决办法详解

一. 问题背景 今天壹哥在讲完MyBatis后&#xff0c;有学生在进行代码练习时遇到了下面这样的一个异常&#xff0c;先上图&#xff1a; 二. 问题分析 1. 原因分析 首先我们看到&#xff0c;这里抛出的异常是org.apache.ibatis.binding.BindingException&#xff0c;接着再看异…

老板说我最近飘了,都敢用 MySQL 实现分布式锁了

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 以前参加过一个库存系统&#xff0c;由于其业务复杂性&#xff0c;搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说&#xff0c;有定时任务…

专为医疗领域打造!飞凌嵌入式新一代FDU显控一体机发布

飞凌嵌入式重磅推出一款专为医疗打造的显控一体机——FDU070K02 & FDU101K02。产品采用无外壳设计、支持戴医疗手套触摸&#xff0c;支持双屏同显或异显&#xff0c;兼顾场景灵活性与使用便捷性。 同时飞凌为用户提供开箱即用的硬件和操作系统&#xff0c;极大简化了开发流…

vue+element模仿电商商城,前后端分离实现,下单微信扫码支付

1.前言 接上一篇《vueelementSpringBootOAuth2Spring SecurityRedismybatis-plusmysqlswagger模仿商城&#xff0c;前后端分离实现》。 上篇文章介绍了&#xff1a; 用户注册用户登录首页商品推荐展览商品搜索商品分类按商品分类预览商品商品详情预览加入购物车 上一篇文章有…

【使用 BERT 的问答系统】第 5 章 :BERT模型应用:问答系统

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

arthars在线诊断

官网地址&#xff1a;https://arthas.aliyun.com/doc/quick-start.html#_6- 1.安装启动 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar2.选择对应进程编号回车3.watch命令 官网命令文档&#xff1a;https://arthas.aliyun.com/doc/arthas-t…

[python][学习]循环与嵌套---打印乘法口诀

打印乘法口诀表 打印乘法口诀表 按照规律可以直接用一个for循环进行实现 加就是显示字符串&#xff0c;没有加就是直接计算或者显示 for i in range(1,10): print(i,*,1,,i*1,end ) print(i,*,2,,i*2,end ) print(i,*,3,,i*3,end ) print(i,*,4,,i*…

STC 51单片机50——中断问题演示

// 功能要求&#xff1a;按下按钮后&#xff0c;Led的状态改变。 #include "reg51.h" sbit LedP1^0; sbit ButtonP3^2; //外中断0对应的引脚 void delay(unsigned char m) { unsigned char i,j,k; for(i0;i<m;i) for(j0;j<250;j) for(k…

JWT生成tonken验证+AOP拦截验证

JSON Web Token&#xff08;JWT&#xff09;是目前都在用的前后分离跨域验证规则。 JWT由3部分组成 Header——头部一般Base64URL编码&#xff0c;作用&#xff1a;声明token类型&#xff0c;声明token使用的加密算法。一般都是使用HMAC-SHA256或者RSA支持很多种算法&#xf…

岩藻多糖-聚乙二醇-刀豆球蛋白A,ConcanavalinA-PEG-Fucoidan,刀豆球蛋白A-PEG-岩藻多糖

岩藻多糖-聚乙二醇-刀豆球蛋白A&#xff0c;ConcanavalinA-PEG-Fucoidan&#xff0c;刀豆球蛋白A-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-刀豆球蛋白A 英文名称&#xff1a;Fucoidan-ConcanavalinA 别称&#xff1a;刀豆球蛋白A修饰岩藻多糖&#xff0c;ConA-岩藻多糖 …

分享从零开始学习网络设备配置--任务2.6 避免网络环路

任务描述 某公司最近由于业务迅速发展和对网络可靠性的要求&#xff0c;使用了两台高性能交换机作为核心交换机&#xff0c;接入层交换机与核心层交换机互联&#xff0c;形成冗余结构&#xff0c;来满足网络的可靠性&#xff0c;达到最佳的工作效率。 生成树技术&#xff08;S…

在一次又一次的失败中, 我总结了这份万字的《MySQL 性能调优笔记》

MySQL 性能调优学习导图》概要 说明&#xff1a;本文篇幅有限&#xff0c;故只展示部分内容&#xff0c;《MySQL 性能调优学习导图》资料已整理成文档&#xff0c;需要获取的小伙伴可以直接转发关注后私信&#xff08;学习&#xff09;即可获取哦 一、性能监控 1. 使用 show p…

2022/12/1 结构体

结构体 声明结构体&#xff1a; struct 结构体名 例如&#xff1a;struct student 其中&#xff0c;student又称为结构体标记 结构体可以拥有成员&#xff0c;例如&#xff1a; struct student { int num; int score; char name[20] }; 注意&#xff0c;分号不可以少…

万应低代码11月重点更新内容速递

速览版 详情版 低代码开发效率升级 1.页面变量支持快速构建 在「数据提交」、「调用逻辑」等存在数据返回的节点中&#xff0c;支持根据其输出的内容去自动创建数据类型相同的变量&#xff0c;并自动建立好映射关系。 ● 【功能上线前】&#xff1a; 需要为每一个输出字…

Elasticsearch_第一章_ elasticsearch基础

Elasticsearch_第一章_ elasticsearch基础 – elasticsearch基础 文章目录Elasticsearch_第一章_ elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术&#xff1f;1…

企业该如何选择自己合适的云财务软件?

据相关数据统计&#xff0c;2021年&#xff0c;我国云服务市场规模达274亿美元&#xff08;超1700亿元人民币&#xff09;&#xff0c;预计到2026年将增长至850亿美元&#xff08;约5400亿元人民币&#xff09;。可见&#xff0c;云服务市场的发展之迅。对于企业而言&#xff0…