【分布式事务】分布式事务理论

CAP 理论

  • 一致性(Consistency)

    分布式系统中所有数据备份,在同一时刻是否是同样的值

  • 可用性(Availability)

    集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求

  • 分区容错性(Partition tolerance )

    大多数分布式系统都分布在多个子网络,每个子网络叫做一个区(partition)。分区容错是指区之间的通信可能失败

CAP 原则指的是这三个要素只能实现两点,不可能三者兼顾。在分布式系统中,一般来说分区容错性不可避免,所以 P 总是成立的,C 和 A 无法同时做到

如何实现一致性

raft 算法

Raft

paxos 算法

结论

对于多数大型互联网应用的场景,节点众多、部署分散,由于现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到 N 个 9(99.99..%),并要达到良好的响应性能来提高用户体验,因此一般都会做出如下选择:保证 P 和 A,舍弃 C 强一致,保证最终一致性

Base 理论

  • Basically Available(基本可用)

    基本可用是指分布式系统在出现故障的时候,允许损失部分可用性(例如响应时间、功能上的可用性),允许损失部分可用性。需要注意的是,基本可用绝不等价于系统不可用

    • 响应时间上的损失:正常情况下搜索引擎需要在 0.5 秒内返回给用户相应的查询结果,但由于出现故障(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了 1 ~ 2 秒

    • 功能上的损失:购物网站在购物高峰(如双十一)时,为了保护系统的稳定性,部分消费者可能会被引导到一个降级页面

  • Soft State(软状态)

    软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据会有多个副本,允许不同副本同步的延时就是软状态的体现。mysql replication 的异步复制也是一种体现

  • Eventual Consistency(最终一致性)

    最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况

    • 强一致性:更新过据后,所有节点立刻能看到更新后的数据

    • 弱一致性:更新过据后,能容忍部分节点看不到更新后的数据

    • 最终一致性:一段时间后,所有节点都能看到更新后的数据

分布式事务场景

  • 跨 JVM 进程:微服务之间通过远程调用完成事务操作。 比如电商系统中提交订单,订单微服务请求库存微服务扣减库存,请求会员微服务增加积分,在分布式系统中经常发生网络异常、机器宕机导致请求失败,如果库存服务扣减库存成功后宕机了,订单服务就会回滚,造成数据的不一致

  • 跨库:比如做了订单数据做了分库之后的更新操作,订单数据落在不同的库中,如果更新失败必须全部回滚

  • 跨数据库实例

分布式事务角色

  • TM(Transaction Manager):事务管理者。负责协调和管理事务,事务管理器控制着全局事务,管理事务生命周期,并协调各个 RM

  • RM(Resouce Manager):资源管理者。可以理解为事务的参与者,一般情况下是指一个数据库实例,控制着分支事务

  • TC(Tracnaction Coordinator):全局事务的协调者

分布式事务方案

2PC 模式

2PC 即两阶段提交协议,是将整个事务流程分为两个阶段:准备阶段(Prepare phase)和提交阶段(Commit phase)

2PC 是一种强一致性设计,它引入一个协调者来协调管理各参与者的提交和回滚

  • 准备阶段(Prepare phase)

    1. 协调者向所有参与者发送 prepare 消息,询问是否可以提交事务,并等待答复

    2. 每个事务参与者在本地执行事务,并写本地的 undo/redo 日志,此时事务没有提交

      undo 日志是记录修改前的数据,用于数据库回滚;redo 日志是记录修改后的数据,用于提交事务后写入数据文件

    3. 如参与者执行成功,给协调者反馈同意,否则反馈中止

    1596360577153

  • 提交阶段(Commit phase)

    1. 协调者节点向所有参与者节点发送 commit 消息,让各参与者正式提交

    2. 参与者节点完成提交,并释放在整个事务期间内占用的资源

    3. 参与者节点向协调者节点发送 ack 完成消息

    4. 协调者节点收到所有参与者节点反馈的 ack 完成消息后,完成事务

    1596376239082

XA 协议

XA 协议是 X/OPEN 提出的分布式事务处理规范,它规范了 TM 与 RM 之间的通信接口。部分关系数据库如 Oracle、MySQL 都支持 XA 协议

优缺点

优点:

  • 开发成本低:XA 协议比较简单,如果商业数据库实现了 XA 协议,使用分布式事务的成本比较低

缺点:

  • 性能问题:XA 协议性能差,类似交易下单链路并发量很高,无法支持高并发场景

  • 可靠性问题:在提交阶段协调者宕机,参与者会一直阻塞下去,需要额外的备机进行容错

  • 数据一致性问题:协调者向参与者发送 commit 消息之后,发生了局部网络异常或者协调者宕机了,导致只有一部分参与者接收到了 commit 消息,其他部分未接收到 commit 消息的参与者则无法执行事务提交,于是整个分布式系统便出现了数据不一致

3PC 模式

  • 相比 2PC 模式,准备阶段进一步拆分了准备阶段和预提交阶段

  • RM 引入了超时机制

柔性事务-TCC 事务补偿

TCC(Try Confirm Cancel) 方案是一种应用层面侵入业务的两阶段提交,可以理解为手动的 2PC。其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿操作

  • Try 阶段

    • 完成所有业务检查

    • 预留必须的业务资源

    • 尝试执行业务

  • Confirm/Cancel 阶段

    • Confirm 和 Cancel 操作满足幂等性,如果 Confirm 或 Cancel 操作执行失败,将会不断重试直到执行完成

    • Try 阶段全部服务执行成功,进入 Confirm 阶段,执行确认业务逻辑操作

    • Try 阶段存在服务执行失败, 进入 Cancel 阶段,执行业务补偿操作

tcc

优缺点

优点:

  • 性能提升:相比与 XA 协议,具体业务来实现控制资源,锁的粒度变小,性能更高

  • 数据最终一致性:基于重试机制和 Confirm/Cancel 操作的幂等性,保证事务最终完成确认或者取消,保证数据的最终一致性

  • 可靠性:解决了 XA 协议的协调者单点故障问题,

缺点:

  • 业务侵入性高,开发成本高

最大努力通知

可靠消息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

移动硬盘损坏无法读取:故障解析与数据恢复策略

一、现象描述:移动硬盘损坏无法读取的困境 在数字化时代,移动硬盘作为数据存储的重要工具,广泛应用于个人和企业中。然而,当移动硬盘突然损坏,无法被系统正常读取时,往往会带来极大的困扰。用户可能会遇到…

《2024天猫618大促-首波男装销售报告》

这份报告主要分析了2024年天猫618大促期间的首波男装销售情况,从多个维度进行了深入的复盘和分析。报告中不仅包含了销售数据的统计分析,还对消费者行为、品牌表现、产品趋势等方面进行了详细的解读。通过对这些数据和信息的深入挖掘,报告揭示了当前男装市场的一些重要趋势和特…

冻干食品市场飙升至新高度,预计到 2030 年将达到 717 亿美元

冻干食品市场,近年来经历了显著增长,2021 年价值 372 亿美元,预计到 2030 年将达到 717 亿美元。 从2022年到2030年,这一强劲的扩张是由7.7%的复合年增长率推动的,这是由于多种因素造成的,包括食品加工行…

Linux命令重温

目录 Linux安装基础命令lsllcdpwdmkdirrmdirtouchcpmvrmvi/vim>和>>catheadlessmoretailechoclearwhich 进阶命令其他命令 Linux安装 通过vmware设置模拟硬件环境安装centos系统进行相应的网络配置安装xshell bin 存放二进制可执行文件(ls,cat,mkdir等) boot 存放用…

【STM32+FPGA】先进算力+强安全+边缘AI,64位STM32MP2聚焦工业4.0应用

工业应用数字化和智能化程度,是衡量新质生产力的重要标准。STM32最新一代64位微处理器STM32MP2凭借先进算力、丰富接口和高安全性,为高性能和高度互联的工业4.0应用赋能。 STM32MP2四大关键特性,为工业4.0应用赋能 STM32MP2系列的第一颗产品S…

Java项目:基于SSM框架实现的电子竞技管理平台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的电子竞技管理平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

【Python时序预测系列】基于LSTM实现单变量时序序列多步预测(案例+源码)

这是我的第307篇原创文章。 一、引言 单站点单变量输入单变量输出多步预测问题----基于LSTM实现。 单输入就是输入1个特征变量 单输出就是预测出1个标签的结果 多步就是利用过去N天预测未来M天的结果 二、实现过程 2.1 读取数据集 # 读取数据集 data pd.read_csv(data.c…

超级内卷时代,这样做,刻不容缓

分享一个月入十万的赚钱项目 别再抱怨手上项目不好做,生意不好做了,这只是个开始,长远来看,2024应该是未来几年中经济环境最好的一年,我们所有人都已经进入到“超级内卷”时代! 随着竞争环境越来越激烈&…

欢乐钓鱼大师游戏攻略:内置免费辅助工具的云手机!自动钓鱼!

《欢乐钓鱼大师》是一款极具趣味性和挑战性的钓鱼模拟游戏,玩家可以在虚拟的世界中体验到真实钓鱼的乐趣。本文将详细介绍游戏的各个方面,包括基本操作、鱼种识别、装备选择、技巧提升等,帮助玩家快速上手并逐步提升钓鱼技能。 《欢乐钓鱼大师…

010-基于Sklearn的机器学习入门:聚类(上)

本节及后续章节将介绍深度学习中的几种聚类算法,所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇,将介绍几种相对基础的聚类算法,包括K-均值算法和均值漂移算法。 目录 10.1 聚类概述 10.1.1 聚类的种类 10.1.2 Sklearn聚类子模…

前年升2区,去年升TOP,目前扩刊中,投稿难度较小,这本SSCI可纳入考虑~

【SciencePub学术】今天给大家推荐的是一本经济管理领域的SSCI,大家都称之为TOP刊中的易中“水刊”。据说很多人已经靠信息差吃上了这本TOP刊的红利,接下来给大家解析一下这本期刊。 《Socio-Economic Planning Sciences》是一本国际性的学术期刊&#x…

数据分析:微生物组差异丰度方法汇总

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 微生物数据具有一下的特点,这使得在做差异分析的时候需要考虑到更多的问题&…

文本批量高效编辑神器:空格秒变分隔符,提升工作效率

在信息爆炸的时代,文本处理已成为我们日常工作中不可或缺的一部分。然而,面对海量的文本数据,如何高效、准确地进行编辑和整理,成为了我们面临的难题。今天,我要向大家介绍一款文本批量高效编辑神器——首助编辑高手&a…

员工不会写OKR,有没有好的方法可以帮助他们?

在做 OKR 辅导的过程中,我发现很多公司在 OKR 制定的环节出现了问题,比如目标的方向不清晰、关键结果不如何 SMART 原则、描述冗长复杂、不够聚焦等。他们可能会认为刚刚开始推行,制定上出现一些问题无伤大雅,但这会对之后的 OKR …

材料科学SCI期刊,中科院2区,影响因子4.7

一、期刊名称 Progress in Natural Science-Materials International 二、期刊简介概况 期刊类型:SCI 学科领域:材料科学 影响因子:4.7 中科院分区:2区 三、期刊征稿范围 由中国材料研究会负责的同行评议 由中国材料研究会&…

设计模式原则——里氏替换原则

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 里氏替换原则 继承必须确保父类所拥有的性质在子类中依然成立 与开闭原则不同的是开闭原则可以改变父类原有的功能,里氏替换原则不能修改父类的原有的性质&#…

关于电机的线性思考

当大多数工程师听到电机这个词时,他们自然地想到旋转装置,例如有刷直流、无刷直流、步进电机或变频原动机。但是电机不一定是旋转的,很多时候设计需要直线运动。一种解决方案是添加某种齿轮或皮带装置来转换旋转运动,这种解决方案…

GPU技术全景:推动未来计算的新动力-1

1、概述 主流GPU技术方向在近年来持续快速发展,聚焦于提升性能、能效、灵活性以及适应不断增长的计算需求,尤其是在人工智能、高性能计算、图形渲染、数据分析以及虚拟现实等领域。以下是几个关键的发展趋势和方向: 1. 并行计算优化&…

基于Java校园短期闲置资源置换平台设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

计算机方向国际学术会议推荐

【JPCS独立出版 | EI核心、Scopus】第四届计算机、遥感与航空航天国际学术会议(CRSA 2024) 大会官网:www.iccrsa.org 时间地点:2024年7月5-7日,日本-大阪(线上召开) 征稿主题:计算…