最新要闻
- 当前关注:重回中国!福建13岁女孩4.82秒打破鲁班锁世界纪录
- 今日讯!ROG新款幻14笔记本即将上市:锐龙9 7940HS 可选RTX 4060
- 免费用!中国信通院全球网测APP iOS版上线:支持5G/千兆接入测速
- 速读:71款任选 森马T恤33元清仓手慢无
- 动态:祝福!比尔盖茨有新女友了 身家超33亿女富婆:双方沉默 前妻也有新恋情
- 完美收官!《三体》电视剧最后5集被赞爆:老外满分刷屏
- 快看:80km续航 雅迪电动车DN2千元秒杀:2699元起还是新国标
- 今亮点!女子熬夜看《狂飙》:患高启强同款干眼症
- 世界热头条丨逆天 韩国学生用ChatGPT写论文“喜”提0分 校方:剽窃!
- 快资讯:再续一个月:《阿凡达:水之道》再次宣布延长上映
- 28款CPU性能实测:Intel实力屠榜 AMD游戏神U赢回面子
- 全球消息!全国首座高速公路重卡充换电站亮相:电池包350kWh 3分钟自动换电
- 环球视点!无损压缩鼻祖去世了 没有他就没有今天的Zip、PNG、PDF
- 当前观点:博主“科普”鲸鱼会假装搁浅吸引人来救 博物杂志辟谣:九死一生
- 天天快讯:行驶中会“熄火” 大众召回超2万辆ID.4电动车
- 世界报道:欧洲玩家吐槽《霍格沃茨之遗》捏脸系统:最浅的皮肤选项依然很深
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界看热讯:《分布式技术原理与算法解析》学习笔记Day06
分布式事务
什么是分布式事务?
事务提供了一种机制,将包含一系列操作的工作序列纳入到一个不可分割的执行单元,只有所有操作都被正确执行才能提交事务,任意一个操作失败都会导致整个事务回滚到之前状态。
(资料图片)
简单的说,事务提供了一种机制,使得工作要么全部都不做,要么全部被执行,即all or nothing。
分布式事务,就是在分布式系统中运行的事务,由多个本地事务组合而成,在分布式场景下,对事务的处理操作可能来自不同的机器,甚至是来自不同的操作系统。
什么是ACID?
ACID是事务具有的四大基本特征:
- A:原子性(Atomicity),即事物最终的状态只有两种,全部执行成功或全部不执行,不会停留在中间某个环节。
- C:一致性(Consistency),指事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。
- I:隔离性(Isolation),指当系统内有多个事务并发执行时,多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他事务时隔离的。
- D:持久性(Durability),指一个事物被执行后,那么它对数据库所做的更新就永久地保存下来了。
什么是BASE理论?
ACID中的C是强一致性,也就是说所有操作都执行成功才能提交最终结果,以保证数据一致性或完整性。随着分布式系统规模不断扩大,复杂度急剧上升,达成强一致所需时间周期较长,限定了复杂业务的处理。
为了解决这一挑战,提出了BASE理论,关键点在于采用最终一致性来取代强一致性:
- 基本可用(Basically Available):分布式系统出现故障时,允许损失一部分功能的可用性,保证核心功能可用。
- 柔性状态(Soft State):在柔性事务中,允许系统存在中间状态,且这个中间状态不影响系统整体可用性。
- 最终一致性(Eventually Consistency):事务在操作过程中可能会由于同步延迟等问题导致不一致,但最终状态下,所有的数据都是一致的。
ACID和BASE是对一致性和可用性的不同权衡所产生的不同结果,但二者都保证了数据的持久性。ACID选择了强一致性而放弃了系统的可用性,BASE理论则保证了系统的可用性,允许数据在一段时间内可以不一致,最终达到一致状态即可。
什么是刚性事务和柔性事务?
- 刚性事务:遵循ACID原则,具有强一致性。
- 柔性事务:根据不同的业务场景使用不同的方法实现最终一致性,它允许数据在一定时间内不一致,但要求最终一致。
如何实现分布式事务?
常用的分布式事务有3种基本方法:
- 基于XA协议的二阶段提交协议方法
- 三阶段提交协议方法
- 基于消息的最终一致性方法
基于XA协议的二阶段提交方法
基于XA协议的二阶段提交方法中,二阶段提交协议(Two-phase Commit Protocol,2PC)是用于保证分布式系统中事务提交时的数据一致性,是XA在全局事务中用于协调多个资源的机制。
它引入了一个协调者来管理所有的节点,并确保这些节点正确提交操作结果,如果提交失败则放弃事务。
二阶段提交协议的执行过程分为投票(Voting)和提交(Commit)两个阶段:
- 投票阶段:协调者(Coordinator)向事务参与者(Cohort)发起执行操作的CanCommit请求,并等待参与者的响应。参与者收到请求后,会执行请求中的事务操作,将操作信息记录到事务日志中但不提交(不会修改数据库中的数据),待参与者执行成功,则向协调者发送“Yes”消息,表示同意操作,若不成功,则发送“No”消息,表示终止操作。
- 提交阶段:协调者受到所有参与者的消息后,根据受到的消息,向所有参与者发送DoCommit或者DoAbort消息,规则如下:
- 如果协调者受到的都是“Yes”,那么它会向所有参与者发送“DoCommit”消息,参与者收到消息后,完成剩余操作(比如修改数据库中的数据)并释放资源,然后向协调者发送“HaveCommitted”消息。
- 如果协调者收到的消息中包含“No”,那么它会向所有参与者发送“DoAbort”消息,此时在投票阶段发送“Yes”消息的参与者,会根据之前执行操作时的事务日志对操作进行回滚,之后所有参与者会向协调者发送“HaveCommitted”消息。
- 协调者接收到所有参与者的“HaveCommitted”消息后,就意味着整个事务结束了。
二阶段提交的算法思路可以概括为:协调者向参与者下发请求事务操作,参与者接收到请求后,进行相关操作并将操作结果通知协同者,协同者根据所有参与者的反馈结果决定各参与者是要提交操作还是撤销操作。
基于XA的二阶段提交算法存在的问题:
- 同步阻塞问题,二阶段提交算法在执行过程中,所有参与者都是事务阻塞型的,这样它不支持高并发场景。
- 单点故障问题,算法类似于集中式算法,一旦事务管理器发生故障,整个系统都处于停滞状态。尤其是在提交阶段一旦事务管理器发生故障,资源管理器会由于等待管理器的消息,而一直锁定事务资源,导致整个系统被阻塞。
- 数据不一致问题,在提交阶段,当协调者向所有参与者发送“DoCommit”请求时,如果发生了局部网络异常,或者在发送提交请求的过程中协调者发生了故障,就会导致只有一部分参与者接收到了提交请求并执行提交操作,但其他未接收到提交请求的那部分参与者则无法执行事务提交,这样会造成数据不一致。
三阶段提交方法
三阶段提交协议(Three-phase Commit Protocol,3PC)是对二阶段提交(2PC)的改进,它引入了超时机制和准备阶段。
- 3PC引入了超时机制,如果协调者或参与者在规定时间内没有收到来自其他节点的消息,就会根据当前的状态选择提交或者终止整个事务,从而减少整个集群的阻塞时间。
- 3PC在2PC的第一阶段和第二阶段中间引入了一个准备阶段,或者说把2PC的投票阶段一分为二,在提交阶段之前,加入了一个预提交阶段。
三阶段提交协议有CanCommit、PreCommit和DoCommit三个阶段:
- CanCommit阶段:协调者向参与者发送请求操作(CanCommit请求),询问参与者是否可以执行事务提交操作,然后等待参与者响应,参与者收到CanCommit请求后,回复Yes表示可以顺利执行事务,否则回复No。需要注意这时参与者不会将操作信息记录到事务日志中。
- PreCommit阶段:协调者根据参与者的回复消息,决定是否可以进行PreCommit操作:
- 如果所有参与者回复的都是Yes,那么协调者就会执行事务的预执行。
- 协调者向参与者发送PreCommit请求,进入预提交阶段。
- 参与者收到PreCommit请求后执行事务操作,并将Undo和Redo信息记录到事务日志中。
- 如果参与者成功执行了事务操作,则返回ACK响应,同时开始等待最终指令。
- 假如任何一个参与者向协调者发送了“No”消息,或者等待超时后,协调者都没有收到参与者的响应,就执行中断事务的操作。
- 协调者向所有参与者发送“Abort”消息。
- 参与者收到“Abort”消息后,或超时后仍未收到协调者的消息,执行中断事务操作。
- DoCommit阶段:执行真正的事务提交,根据PreCommit阶段协调者发送的消息,进入执行提交阶段或者中断事务阶段。
- 执行提交阶段:
- 如果协调者接收到所有参与者的ACK响应,则向所有参与者发送DoCommit消息,开始执行阶段。
- 参与者接收到DoCommit消息后,正式提交事务,完成事务提交后,释放所有锁住的资源,并向协调者发送ACK响应。
- 协调者接收到所有参与者的ACK响应后,完成事务。
- 中断事务阶段:
- 协调者向所有参与者发送Abort请求。
- 参与者接收到Abort消息后,利用其在PreCommit阶段记录的Undo信息执行事务的回滚操作,释放所有锁住的资源,并向协调者发送ACK消息。
- 协调者接收到所有参与者发送的ACK响应,执行事务中断操作,并结束事务。
- 执行提交阶段:
3PC协议在协调者和参与者都引入了超时机制,当参与者在预提交阶段向协调者发送ACK消息后,如果长时间没有得到协调者的响应,在默认情况下,参与者会自动降超时事务进行提交,从而减少整个集群的阻塞时间。
三阶段提交仍然会存在数据不一致的情况。
基于分布式消息的最终一致性方案
2PC和3PC的核心思想都是以集中式的方式实现分布式事务,它有两个缺点:
- 同步执行,性能差
- 数据不一致问题
我们解决一致性问题的核心思想:将需要分布式处理的事务通过消息或者日志的方式异步执行,消息或日志可以存到本地文件、数据库或者消息队列中,再通过业务规则进行失败重试。
基于分布式消息的最终一致性方案的事务处理,引入了一个消息中间件,用于在多个应用之间进行消息传递。
这种方案采用消息传递机制,并使用异步通信的方式,避免了通信阻塞,从而增加系统的吞吐量,同时它还可以屏蔽不同系统的协议规范,使其可以直接交互。
在不需要请求立即返回结果的场景下,这些特性就带来了明显的通信优势,并且通过引入消息中间件,实现了消息生成方本地事务和消息发送的原子性,采用最终一致性方式,只需保证数据最终一致即可,一定程度上解决了2PC和3PC因为强一致性而在某些情况下导致数据不一致的问题。
针对上述三种不同的分布式事务方法,详细的比较如下表所示。
-
焦点消息!ASP.NET Core+Element+SQL Server开发校园图书管理系统(完)
随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP NETCore也应运而生。本文主要基于ASP ...
来源: 世界看热讯:《分布式技术原理与算法解析》学习笔记Day06
焦点消息!ASP.NET Core+Element+SQL Server开发校园图书管理系统(完)
全球看点:if else 代码优化实战
全球动态:网络协议-ssh基础
当前关注:重回中国!福建13岁女孩4.82秒打破鲁班锁世界纪录
今日讯!ROG新款幻14笔记本即将上市:锐龙9 7940HS 可选RTX 4060
免费用!中国信通院全球网测APP iOS版上线:支持5G/千兆接入测速
速读:71款任选 森马T恤33元清仓手慢无
动态:祝福!比尔盖茨有新女友了 身家超33亿女富婆:双方沉默 前妻也有新恋情
完美收官!《三体》电视剧最后5集被赞爆:老外满分刷屏
快看:80km续航 雅迪电动车DN2千元秒杀:2699元起还是新国标
Copula
今亮点!女子熬夜看《狂飙》:患高启强同款干眼症
世界热头条丨逆天 韩国学生用ChatGPT写论文“喜”提0分 校方:剽窃!
快资讯:再续一个月:《阿凡达:水之道》再次宣布延长上映
28款CPU性能实测:Intel实力屠榜 AMD游戏神U赢回面子
全球消息!全国首座高速公路重卡充换电站亮相:电池包350kWh 3分钟自动换电
基于图的下一代入侵检测系统
环球快资讯丨MySQL——性能优化的关注点
天天简讯:记录--Cesium+Vue实战教程——地图导航
世界关注:人工智能(Python)教程_编程入门自学教程_菜鸟教程-免费教程分享
天天要闻:安卓常用shell命令大全
环球视点!无损压缩鼻祖去世了 没有他就没有今天的Zip、PNG、PDF
当前观点:博主“科普”鲸鱼会假装搁浅吸引人来救 博物杂志辟谣:九死一生
天天快讯:行驶中会“熄火” 大众召回超2万辆ID.4电动车
世界报道:欧洲玩家吐槽《霍格沃茨之遗》捏脸系统:最浅的皮肤选项依然很深
当前速看:Stochastic Methods in Finance (1)
【独家】.Net6对AOP的多种支持之IAsyncResourceFilter
世界观天下!常见的python技术难点分享
当前速讯:Nodejs原型链污染
世界要闻:[threeJS]--- 外部导入的模型如何编程式实现帧动画以及调用模型自带的动画
情人节必备:德芙香浓黑巧12元/碗大促
逃离银河系!科学家在仙女星系中发现银河移民
世界快播:山东女子中淘宝彩票锦鲤:直播1小时刮594张彩票 中7170元
天天滚动:骁龙8+满血版、残血版差价非常大 一加揭秘:能差1个亿
防止技术垄断:昆仑万维宣布将在年内开源类ChatGPT代码
【全球播资讯】陕西旅游集团旗下景区春节期间累计接待超 200 万人次,这背后也有火山引擎 VeDI 的身影
当前热门:分享5个我不能没有的Vue.js库,不信你用不上
KingbaseES libstdc++.so.6 version 'CXXABI_1.3.8'问题处理
敏捷数据科学教程_编程入门自学教程_菜鸟教程-免费教程分享
MPI库并行Fortran程序:进程通讯
微头条丨女子带汉堡进星巴克被拦 称味道大会影响其他顾客 网友抵制
微信数据再多都够用 真我GT Neo5 1TB干到3499元:旗舰射门员
新资讯:14岁女孩连续玩手机81小时险猝死 专家提醒:家长一定要控制
【环球时快讯】1TB手机不到3500元!网友评价真我GT Neo5:这让友商很难做
世界新消息丨又多了一种摸鱼手段 小红书网页版上线:左图右文 沉浸大屏
快看:Android教程_编程入门自学教程_菜鸟教程-免费教程分享
天天日报丨vue2和vue3的区别有哪些?
docker学习
【全球热闻】剑指Offer 05. 替换空格(java解题)
信息:首个教育圈ChatGPT来了!网易有道将推生成式AI:可批改作文
每日快播:创下历史第二!《霍格沃茨之遗》steam在线人数达48万
快看点丨哭笑不得!西班牙火车尺寸太大无法过隧道:白花2亿多欧元
成都现飞鸟撞树现象 网友疑灾害前兆!专家回应:想多了
环球今日报丨用ChatGPT做表格真香!只需动嘴提要求和复制粘贴
Java基础三元运算符
世界快消息!Crystal Reports 教程_编程入门自学教程_菜鸟教程-免费教程分享
新资讯:再有人问你分布式事务,把这篇文章砸过去给他
有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据
天天播报:部分玩家批评《塞尔达传说:王国之泪》新宣传片:太中庸没新意
环球热讯:比亚迪百万新车或搭载:余承东李想力挺增程式到底落不落后?专家一句真相
C# 学习async/await(个人理解)
30 个 IDEA 常用小技巧,应有尽有,让你的撸码效率直接起飞...
【天天聚看点】世界有史以来最大百科全书!《永乐大典》首次线上公开 免费看
华擎推出4X4 BOX-7000系列迷你主机:锐龙7000U、支持双USB4
小米Civi 2宣布全版本支持MIUI 14!系统丝滑流畅、更省电
女子手机放枕边突然冒烟自燃:曾因进水维修
饭店反向抹零多收1毛被罚4500元 网友点赞:四舍五入抹零有误都可举报
天天日报丨必知必会的设计原则——里氏替换原则
焦点速递!联想发布“问天”服务器品牌 向3S领域发起总攻 5年内冲击第一
焦点!谷歌版ChatGPT灾难级发布 市值一夜狂跌7000亿 熬夜网友:退钱!
快播:刘强东要建员工福利房?京东31亿北京拿地 1.6万元/平
当前快报:手工扯面+秘制辣油 西安饭庄油泼biangbiang面6.6元/盒大促
全球看点:任天堂港服“任亏券”开卖:《塞尔达传说:王国之泪》预售你买没
孔雀石的主要成分是什么?孔雀石的作用与好处有哪些?
空气能热水器的优缺点是什么?空气能热水器十大名牌排名
高一选科怎么选最好?高一期中考试总结范文
暑假带孩子去哪里旅游最好?我的快乐暑假作文模板
旅游高峰期相反的叫什么?旅游高峰期是哪几个月?
植物大战僵尸2闪退是怎么回事?植物大战僵尸2闪退解决办法
精彩看点:【学习笔记】Http请求方法总结
当前通讯!FCoE简单介绍
头条焦点:git在工作中如何使用?
热议:近期做的有意思的两道题,不知道是谁抄谁hhhhh
Java利用ChromeDriver插件网页截图(Wondows版+Linux版)
煲音箱与不煲的差别大吗?煲音箱音量开多大合适?
验证码总是错误是怎么回事?验证码总是错误怎么解决?
电脑屏幕尺子怎么打开?电脑屏幕尺子怎么使用?
技嘉主板怎么设置U盘启动?技嘉主板超频怎么设置?
热门看点:价格率先步入“次世代”:《塞尔达传说:王国之泪》涨至70美元
环球最资讯丨《王者荣耀》项羽、虞姬情人节皮肤来了:280元值吗?
当前关注:荣耀Magic5系列充电规格曝光:全系仅66W快充
环球热文:威马汽车CDO:特斯拉单车净利润是大众十倍 随时都能大降价
热资讯!次日达 冷酸灵泵式牙膏11.9元 清新口气、抗敏感
区块链安全前传之从Web3.0到创造自己的数字货币
天天快资讯:“采访”ChatGPT看看它对我们GreatSQL社区有什么看法
关于小程序变现方式你还知道哪些?
焦点热文:开发过程中安装的依赖包
每日热议!Spring源码第一章:创建简单的 Bean 容器
买房不如买车、50万交利息税等:年轻人为什么越来越反感专家?