分布式事务与分布式系统

分布式锁与分布式事务:解决分布式系统中的并发问题 分布式锁与分布式事务:解决分布式系统中的并发问题 作者:禅与计算机程序设计艺术 背景介绍 1.1 分布式系统的基本概念 在过去的数年中,随着互联网技术的飞速发展,越来越多的系统采用了分布式架构。分布式系统是由 阅读详情

一. 概述

我们将"业务系统"为协调者,数据库以及其他业务系统为"参与者"。当协调者在整个事务过程中,将参与者 A 提交了事务,然而参与者 B 提交事务失败。这时协调者需要将参与者 A 需要回滚,然而回滚失败,协调者该如何去处理该异常场景。例如,协调者向参与者 B 提交事务超时,参与者是否已经提交了事务,还是未提交事务;这个就是微服务常见的分布式事务问题。

在数据量暴增,访问量很大的情况下,往往一个单机服务器是无法有效的提供服务的;以及当服务器宕机后无法提供服务。这时就提出了这么分布式系统这个概念,在《分布式系统概念与设计》一书中,对分布式系统做了如下定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。基于该分布式系统,衍生出了分布式事务这个专业术语。

二. CAP 理论

CAP 理论有三个特性

分布式事务与分布式系统

  • Consistency 数据一致性:副本中的数据一致性;
  • Availability 可用性:当某个节点宕机后,其他节点依然可以提供服务
  • Partition Tolerance 分区容错性:当网络出现抖动,节点之间短时间出现通信中断。

三. Base 理论

基于无法满足 CAP 条件,提出了最终一致性解决方案。其摒弃短暂的不可用。 现在说的 paxos 算法以及 raft 算法都是基于这样子理论进行设计,这纯属个人理解 。

  • 基本可用(Basically Available)
  • 软状态(Soft State)
  • 最终一致性(Eventually Consistent)

四. 分布式事务

分布式事务的解决方案。

分布式事务中涉及到几个关键的概念,X/Open 组织(即现在的 Open Group )定义了分布式事务处理模型。 X/Open DTP 模型( 1994 )包括应用程序( AP )、事务管理器( TM )、资源管理器( RM )、通信资源管理器( CRM )四部分。一般,常见的事务管理器( TM )是交易中间件,常见的资源管理器( RM )是数据库,常见的通信资源管理器( CRM )是消息中间件。

分布式事务与分布式系统

分布式事务与分布式系统

1. 两阶段提交协议

两阶段提交协议分为两个阶段进行,第一阶段是预处理阶段,也就是发送 SQL 语句,业务系统校验数据库返回的响应进行校验。第二阶段是提交阶段,也就是发送 commit 指令给数据库。

  • 第一阶段 预处理阶段:事务协调者(事务管理器)给每个参与者(资源管理器)发送 Prepare 消息,每个参与者要么直接返回失败 ,要么在本地执行事务,写本地的 redo 和 undo 日志,但不提交。其预处理要分为三个子步骤:
  • 协调者节点向所有参与者节点询问是否可以执行提交操作(vote),并开始等待各参与者节点的响应。
  • 参与者节点执行询问发起为止的所有事务操作,并将 Undo 信息和 Redo 信息写入日志。(注意:若成功这里其实每个参与者已经执行了事务操作)各参与者节点响应协调者节点发起的询问。如果参与者节点的事务操作实际执行成功,则它返回一个”同意”消息;如果参与者节点的事务操作实际执行失败,则它返回一个”中止”消息。
  • 第二阶段 提交阶段:如果协调者收到了参与者的失败或超时,直接给每个参与者发送回滚(rollback)操作;否则发送提交(commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。

无论最后结果如何,第二阶段都结束当前事务。

两阶段有如下几个缺点:

  • 同步阻塞问题 。执行过程中,所有参与节点都是事务阻塞型的。在第一阶段,做预处理时会锁住对应的资源,到第二阶段收到协调者发送的 commit 或者 rollback 消息才释放锁资源,则协调者发送回滚操作才释放锁资源。在锁资源到释放资源过程,会阻塞第三方节点访问该锁资源。
  • 单点故障 。由于协调者的重要性,一旦协调者发生故障,则无法继续完成事务操作。
  • 数据不一致 。在第二阶段中,当协调者向发送 commit 消息请求之后,发生了局部网络异常或者发送 commit 请求过程中协调者发生了故障,会出现部分参与者接收到 commit 消息并进行提交,而其他参与者未收到 commit 消息则无法提交,于是整个事务中就会出现数据不一致的现象。
  • 二阶段无法解决的问题 。协调者再发出 commit 消息之后宕机,而唯一接收到这条消息的参与者同时也宕机了。那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交。

其在工程中很少使用,但其有一定的参考性;

2. 三阶段提交协议

基于两阶段的问题,提出了三阶段提交协议,主要的改动点:

  • 引入了超时机制,同时在协调者和参与者都引入超时机制
  • 在第一阶段和第二阶段中插入准备阶段。保证了在最后提交阶段之前各参与者的状态是一致的。

三阶段提交提交协议,分为三个阶段,CanCommit 阶段、PreCommit 阶段、DoCommit 阶段。

简单理解即可,在日常的开发中,很少使用;我们重点了解 TCC 协议

3. TCC 事务协议

TCC 是采用的补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(回滚)操作。它分为三个阶段:

  • Try 阶段:主要是对业务系统做检测及资源预留
  • Confirm 阶段:主要是对业务系统做确认提交,Try 阶段执行成功并开始执行 Confirm 阶段时,默认 Confirm 阶段是不会出错的。即 Try 成功,Confirm 一定会成功
  • Cancel 阶段:主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。
  • 当其中一个子业务系统返回失败,或者超时,则这次事务以失败处理 ,进入不到第二阶段。 那么需要向所有子业务系统发送回滚请求,使其子业务系统释放其资源 。 当发送回滚请求超时时,则重复发送,以确保子业务系统回滚成功 。在扣减库存而言,则解冻该库存数量。

补充:

  • 为了避免重复发送消息,所有的子业务系统都必须提供 接口幂等性原则 。
  • 为了避免主业务系统宕机,无法知晓这次事务的执行情况,需提供一个机制,记录这次事务的执行状态,待服务器重新提供服务或者定时任务定时处理事务后续的动作,以确保 事务的完整性 。

问题:

  • 当提交超时时,该怎么处理?

需业务场景需要,是否需要回滚,还是依然继续提交。

  • 当只要有一个子业务系统返回失败或者超时,跳到 Cancel 阶段进行回滚后直接结束这次事务。如果回滚超时或者失败该如何处理?或者中途宕机,又该如何处理?

在业务系统中需要记录该事务的执行状态以及子事务的执行状态;当发现超时或者宕机时,可以从中回复执行;

改善点:

在 Confirm 阶段、Cancel 阶段是否需要异步执行,可以有效的提供响应速度。

4. 最大努力通知

通过异步的形式,或者采用第三方组件将请求确保将消息发送给子业务系统。其需要评估该请求在子业务必须执行成功的;否则子业务系统执行失败,主业务系统还需要进行回滚,逻辑将会变得复杂;什么情况下,会采用该机制呢?主要是发短信等必须执行成功的场景下,才会采用该方法;

4.1 本地消息表

将请求保存到本地数据库,交由后台程序异步将请求推送给子业务系统。一般来讲,设计重试 3 次即可,当连续发送三次失败,即通知运维人员进行跟进处理,具体什么原因导致;如果涉及不限次数的发送,那么就会导致业务系统压力过大;

4.2 半消息/最终一致性

采用 MQ,redis 等中间件,事务性的将请求推送子业务系统;前提下,需要确保该中间件是否支持事务性操作,如不支持,需业务系统评估如何才能达到事务性推送。例如 RocketMQ 消息中间,是支持事务性操作,其原理是将消息保存到临时队列,当业务系统 commit 操作时,才将该消息从临时队列移出到目标队列。

五. 副本一致性

5.1 raft

该算法中有三种角色,follower(跟随着)、candidate(候选者)、Leader(领导者)

其主要有两个环节,第一个环节是选举 Leader;第二环节是副本拷贝。

当集群中,没有 Leader 时或者 Leader 宕机时, 有资格 的 follower 就会变为 candidate,接着会竞聘 Leader。谁先发起竞聘,谁就有限当 Leader。至于谁先发送,其给每个 candidate 设置一个随机时间,当时间一到还没收到其他 candidate 竞聘请求的,则其会向各个 candidate 发送竞聘请求;超过半数,自动变为 Leader。

当客户端发送请求过来时,有 Leader 接收处理,并广播给其他 follower;当收到半数的回复成功时,即可确认该请求处理成功。

5.2 paxos

5.2.1 目标

多节点之间对提案达成共识,意味着大多数节点都接受该提案。

5.2.2 角色

Proposer::提议者, 专门用来发出提案(一个值);当超过半数,就认为该提案被选定的。

Acceptor:接收者,专门用来接收提案,并判断是否通过该提案;

Learner:学习者,用来学习被选定的提案(个人理解,可有可无)。

5.2.3 basic-paxos

5.2.3.1 流程

其简单的流程图如下,这里不考虑异常,竞争下的场景;

分布式事务与分布式系统

在 prepare 阶段,Proposer 向 Acceptor 咨询自己是否有提议权(或者发表权)。一旦超过半数 Acceptor 回复 OK,则进入 accept 第二阶段。Proposer 发发送 accept 请求,超过 Acceptor 半数回复 OK。则结束这次提议。至于 Learner 通过谁去学习这个【proposal-value】,

  1. Acceptor 接收 prepare 请求的逻辑

如果 Acceptor 没有批准过提议权的,则无保留意见批准,并记录该 minProposal =【proposal-id】。

如果 Acceptor 之前已经批准过提议权 minProposal ,会与现在收到的提议权携带的【proposal-id】进行比较。 minProposal >=proposal-id,则拒绝该提议权;如果 minProposal <proposal-id,则批准该提议权,并记录该 minProposal =【proposal-id】。并将 Acceptor 自身的【proposal-value】以及【 minProposal 】发给 Proposer。这里留下一个提问, Acceptor 会返回不同的【 proposal-value 】麽?

  1. Proposer 处理 prepare 请求的响应的逻辑

prepare 响应中如果有【proposal-value】A,则设置 Proposer 的【proposal-value】为 A,否则自行做决定该值。

如果超过半数回复同意的,则进入第二阶段去发表意见。

否则重新发起提议,发送 prepare 消息获取提议权。

  1. Proposer 发送 accept 请求的逻辑

将【proposal-id】与【proposal-value】发送给 Acceptor。

  1. Acceptor 接收 accept 请求的逻辑

如果 Acceptor 当前的【proposal-ID】A 与这次 accept 请求中的【提议 ID】B 相比较,如果不相等,则回复【NO】。否则设置 Acceptor 的【proposal-value】的值为 accept 请求中的【proposal-value】,并回复【OK】响应。

  1. Proposer 接收 accept 请求的响应的处理逻辑

如果超过半数回复 OK 的,则不用管理其他回复【NO】响应,把该【proposal-value】发送给 Learner 进行学习。否则重新发送 prepare 消息,再进行一次提议;最终【proposal-value】是一致的。

5.2.3.2 深入探讨

  1. Acceptor 是否会存在多个不同的【proposal-value】?

答案:是不会存在多个不同【proposal-value】。因为在 prepare 阶段,如果 Acceptor 已经有【proposal-value】值,Proposal 会拿这个值在 accept 阶段进行发送;如果没有的话,Proposal 会自行生成一个【proposal-value】值到 accept 阶段进行发送;同时在 accpet 阶段,如果 Acceptor 会去校验【proposal-id】是否相同,相同则设置该【proposal-value】值。有点类似 乐观锁 的机制。

  1. 如果 Acceptor 小部分宕机,或者 Proposal 在提议过程中发生了宕机,会不会出现【proposal-value】不一致?

答案:不会。因为该协议是只要超过半数的 Acceptor 在运转,依然可以提供服务。而 Proposal 宕机,Proposal 重启进行下一轮提议或者交由其他 Proposer 提议,最终【proposal-value】是达成一致。

  1. 并发性问题,性能低效,以及容易出现活锁问题

在多个 Proposal 进行提议时,容易对【proposal-id】进行竞争,导致性能低效,极端情况下,出现活锁现象。以及为了达成共识,需要先 prepare 阶段以及 accept 阶段,会有损耗,也是导致性能低效的原因之一。

5.2.4 multi-paxos

这个就是基于 basic-paxos 中暴露的问题,提供出来的解决方案。

  • 添加一个 leader 角色,所有的提议都由 Leader 角色来发起,这样子有效的避免竞争带来的性能低效以及活锁现象。 但是从而导致 Leader 角色的服务压力过大 。
  • 有效的减少 Prepare 阶段,在满足特定的场景,Leader 可以直接跳过 prepare 阶段,直接到 accept 阶段,减少交互次数,可以有效的减少性能低效问题。

问题,

  1. 什么场景下,可以直接跳过 prepare 阶段?

只有当 Acceptor 自身发现只接收到一个 Leader 的请求时,就会告知 Leader,让其跳过 prepare 阶段;

  1. Leader 是如何选举出来的?

兰伯特博士提出比较简单的方式,就是哪个 server 的 ID 最大,谁就是最大。也可以采用 Raft 机制,谁先发起竞聘,谁就是 Leader。

  1. 出现网络分区,该怎么处理?

兰伯特博士提出一个 并发数 参数来 短时间 避免网络分区问题,当网络分区现象发生时,超过多少笔请求接收完后,网络分区才真正会出现;例如,有 9 个节点,当网络分区发生时,6 个节点互通,而另外 3 个节点互通。当请求过来时,切好落在 3 节点区域,这时该请求是无法通过的,因为当前节点数是 9,需要过半数才能通过;当请求数超过指定的并发数时,该 3 个节点才真正的形成集群,只要超过 2 个节点的通过,即可接收该请求。

5.2.5 总结

有关更多细节讲解的 paxos 文章,可以仔细查阅我引用的文章。

简单写了 paxos 的算法逻辑其目标是解决一致性问题,但还是不知道, 一致性是指数据的一致性呢,还是状态的一致性 ?如果是数据的一致性,那么并发情况下,所有的请求都会到 server 都会变成串行执行,性能肯定是不高;如果说状态的一致性,就说得通,只要各个 server 的状态是一致的,那么表明各个 server 下的数据就是一致的;至于在分布式系统如何使用 paxos 算法,还需要结合请求进行设计流程。 这只是我的理解,纯属参考 。

六. 分布式系统

我们所说的分布式系统,主要是解决计算、存储数据量的问题。无论是计算还是存储,其归根于如何拆分数据,让其数据均匀的分布在各个节点上;

  • 哈希方式 通过哈希算法将数据分布到不同的机器上
  • 按数据范围分布 有点类似与报表系统对数据量大的表按时间维度分区
  • 一致性哈希 结合哈希方式,采用环形的形式,将数据分布到各个节点上;其中提出了虚拟节点的方法,有效的避免数据不均匀的问题。

同时分布式系统也需要高可用,所以需要多副本,从而避免服务宕机,其他副本服务依然提供服务;至于如何保证副本一致性,可以看上面的讲解。

七. 总结

分布式事务,我们主要是采用 TCC 协议,保证事务的一致性;当个别场景可以采用第三方组件,从而减少服务的压力;

分布式系统架构设计原理与实战:深入理解分布式事务 作者:禅与计算机程序设计艺术 1.背景介绍 “分布式系统”已经成为当下热门的话题。在实际工程应用中,各个子系统的部署、服务发现、负载均衡、配置中心等技术都是分布式系统所独有的特性。而对于复杂的分布式系统,如电商、秒杀等业务场景来说,分布式事务则是一个至关重要的问题。 目前,国内关于分布 阅读详情

相关推荐

STM32HAL库学习笔记九——LCD显示

本文不会对驱动编写做特别详细的描述,以记录CubeMX的部署流程为主。

weixin_44762233的博客 6919

分布式事务管理

TC() - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。TM() - 事务管理器定义全局事务的范围:开始全局事务、提交或回滚全局事务。RM() - 资源管理器管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。AT模式:提供无侵入自动补偿的事务模式。自动补偿的sql是系统生成的。TCC模式: 反向补偿的sql需要自己手动去写。XA模式:支持已实现XA接口的数据库的XA模式。SAGA。

光头小小强007的博客 2023

【OpenClaw 实战】Ubuntu 双机 Gateway + Node 部署全流程 + 所有常见坑(2026版)

如果你只是需要浏览器自动化、截屏、简单系统查询 →Node 模式够用,别折腾 exec。如果你需要 GOLD 运行任意 shell 命令、git、npm、自定义脚本 →必须升级成 Gateway。bind lan + pairing approve + token 统一。后续想玩多 Agent 团队,优先考虑双/多 Gateway + 聊天通道互发(社区已有不少成功案例)。欢迎评论区留言你的环境和报错,一起交流!

hampeter的博客 1547

分布式事务学习-LCN

1、什么是分布式事务? 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位 于不同的分布式系统的不同节点之上。 图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库。在交易系 统的业务逻辑中,一个商品在下单之前需要先调用库存服务,进行扣除库存,再调用订单服 务,创建订单记录。 正常情况下,两个数据库各自更新成功,两边数据维持着一致性。 如果在非正常情况下...

Piratesa的博客 772

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

【重磅更新】CT/MRI LI-RADS 2024:肝细胞癌局部区域治疗后反应评估的核心突破与临床实践指南

减少过度治疗:辐射 LRT 的 Nonprogressing 类别避免了 “持续强化 = 存活” 的误判,降低不必要的再治疗风险;提高检出效率:非辐射 LRT 的辅助特征升级减少了 Equivocal 比例,更早识别存活肿瘤;统一评估语言:标准化的分类标准为放射科、肝病科、肿瘤科、肝移植科的多学科协作(MDT)提供了统一 “沟通工具”,助力治疗方案的精准制定。

楚山之石的博客 1226

分布式事务

事务是保障和数据库交互的ACID特性,分布式事务是保障在堆多个数据库进行操作的时候也能想在单机一样的效果。

yangnk的技术记录 266

从噪声中提取真相:LabVIEW振动信号积分处理的降噪艺术

本文深入探讨了LabVIEW在振动信号积分处理中的降噪技术,揭示了如何通过选择性频率加权从噪声中提取关键故障特征。详细介绍了时域和频域积分方法的实现原理及优化策略,并结合工业案例展示了多轴信号联合降噪的实际应用效果,为设备状态监测提供了高效解决方案。

weixin_29164185的博客 304

分布式事务有这一篇就够了!

分布式事务 文章目录分布式事务1. 基础概念1.1 什么是事务1.2 本地事务1.3 分布式事务1.4 分布式事务产生的情景2. 分布式事务基础理论2.1 CAP理论2.1.1 理解CAPC - ConsistencyA - AvailabilityP - Partition tolerance2.1.2 CAP组合方式CAP的组合方式2.1.3 总结2.2 BASE 理论3. 分布式事务解决方案之 2PC3.1 什么是 2PC3.2 解决方案3.2.1 XA 方案3.2.2 Seata 方案3.3 小结4

i_deAc的博客 2465

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 333

ONNX Runtime C# YOLO全链路压测:从300ms到22ms的15个底层优化技巧

摘要:本文分享了工业质检场景下C#调用YOLOv8s ONNX模型的性能优化实战经验。原始单帧推理耗时300ms无法满足产线需求,通过全链路分析定位瓶颈(预处理85ms、推理180ms、后处理30ms)。重点优化措施包括:使用OpenCVSharp CUDA加速预处理(85ms→12ms),开启ONNX Runtime ALL级别图优化,选用TensorRT执行提供程序(180ms→22ms),以及优化内存管理和线程调度。最终实现单帧总耗时22ms±2ms,GPU利用率提升至85%,完整满足产线120块板/

2601_94871597的博客 403

大数据技术:分布式系统和分布式事务

1.    分布式系统1.1  分布式的特点分布性:       分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随时改变。对等性:       分布式系统中的计算机没有主从之分,既没有控制整个系统的主机,也灭有被控制的从机,组成分布式系统的所有计算机节点都对等的的。并发性:       在一个计算机网络中,程序运行过程中的并发性操作也是非常常见的行为。1.2  分布式环境中...

Master-TJ的个人博客 1878

078、镜头阴影校正:LSC算法原理与标定优化

文章摘要 镜头阴影校正(LSC)是手机影像系统中的关键技术,用于解决镜头渐晕效应导致的画面边缘暗角问题。本文详细分析了LSC算法的核心原理,包括非均匀网格划分、双线性插值等关键技术点,并揭示了标定流程中的常见陷阱(光源均匀性、灰卡反射特性、温度漂移)。文章还深入探讨了增益计算的工程实现细节,以及实际调优中的关键考量因素(色差校正、动态场景适应等)。作者结合15年经验,给出了包括验证方法、网格参数设计、产线标定等实用性建议,强调LSC算法应与光学设计协同优化,才能达到最佳效果。

sundong_81的博客 43

分布式系统架构与分布式事务十问十答,小伙伴们赶快收藏吧

冰河最近被OSCHINA邀请参与【高手问答】活动了,主题是:分布式系统架构与分布式事务。本文将一些问答汇总信息进行了整理分享给大家。

冰河的专栏 1384

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【分布式系统三大核心难题:BASE理论、分布式事务与接口幂等性实战解析】

电商系统是典型的分布式系统,涉及用户管理商品管理订单处理库存管理支付系统等多个微服务。在高并发场景下,如何保证系统的一致性、可用性和性能是架构设计的核心挑战。BASE理论为分布式系统提供了一种柔性设计思路,通过基本可用、软状态和最终一致性三大要素,在保证系统可用的前提下实现数据一致性。分布式事务解决方案各有适用场景,2PC适用于强一致性需求,TCC和Saga适用于柔性事务,基于消息的方案适合高并发场景。接口幂等性。

m0_64006292的博客 1123

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【面试】分布式事务方案与分布式系统一致性

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。 分布式系统的经典基础理论 CAP 理论 对于一个分布式计算系统来说,不可...

fcvtb的博客 1235

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

分布式系统中的数据一致性与分布式事务

1.背景介绍 在分布式系统中,数据一致性和分布式事务是非常重要的问题。分布式系统的特点是分布在不同的计算机上,这些计算机可能是同一台计算机上的不同进程,也可能是不同的计算机上的不同进程。在这种情况下,为了保证数据的一致性,我们需要使用分布式事务来处理这些计算机之间的交互。 分布式事务的核心是保证在分布式系统中,多个计算机之间的交互能够保证数据的一致性。这意味着,当一个事务在一个计算机上执行完成...

AI天才研究院 756

分布式系统技术——分布式事务原理与实战

本博文详细介绍分布式事务原理与实战,熟悉多种分布式事务解决方案,帮助你的更好的应用在实践项目中。

庄小焱 1168

分布式系统【七、分布式事务与最终一致性】

本文探讨了分布式系统中的事务一致性问题及其解决方案。首先指出传统ACID事务在分布式环境下的局限性,并引入BASE理论作为替代方案,强调可用性优先原则。随后详细介绍了三种主流的分布式事务实现方式:基于消息队列的最终一致性模型、Saga长事务管理模式和TCC补偿事务模式,分析了各自的优缺点和适用场景。文章还比较了不同方案的技术特点,并指出可结合Raft/Paxos等一致性协议来增强系统可靠性。最后总结提出,在实际工程中需要根据业务需求在一致性、可用性和扩展性之间做出权衡选择。

NeoLshu的博客 908

Python后端学习系列(10):分布式系统与数据一致性(使用分布式锁、分布式事务等)

随着业务规模的不断扩大以及对系统性能、可扩展性的更高要求,后端应用往往会朝着分布式系统的方向发展。然而,分布式系统带来诸多优势的同时,也面临着如数据一致性等复杂的挑战。本期我们就聚焦于分布式系统中的关键问题——数据一致性,深入探讨分布式锁、分布式事务等相关知识以及保障数据一致性的策略与实践,让我们一起深入学习吧。

Azperk的博客 1146

分布式事务与分布式系统(1)

在第二阶段中,当协调者向发送 commit 消息请求之后,发生了局部网络异常或者发送 commit 请求过程中协调者发生了故障,会出现部分参与者接收到 commit 消息并进行提交,而其他参与者未收到 commit 消息则无法提交,于是整个事务中就会出现数据不一致的现象。在扣减库存而言,则解冻该库存数量。第一阶段 预处理阶段:事务协调者(事务管理器)给每个参与者(资源管理器)发送 Prepare 消息,每个参与者要么直接返回失败 ,要么在本地执行事务,写本地的 redo 和 undo 日志,但不提交。

2401_85766950的博客 529

探究分布式事务:深入ACID特性在分布式系统中的挑战与解决方案

分布式事务是指涉及多个节点或服务的事务操作,这些节点可以位于不同的物理位置或运行在不同的系统中。分布式事务需要满足ACID属性,即原子性、一致性、隔离性和持久性。在分布式环境中,由于涉及到多个节点和可能存在网络延迟、节点故障等因素,实现ACID属性变得更加复杂。在分布式环境中,实现ACID特性是一项复杂而又重要的任务。面对网络通信延迟、节点故障等挑战,需要采用适当的技术手段和协调机制来确保事务的可靠性和数据的一致性。因此,了解和解决分布式环境下ACID特性的挑战,是设计和构建分布式系统的关键之一。

喔的嘛呀的博客 1229

分布式事务与消息队列: 解决分布式系统中的数据一致性

1.背景介绍 分布式系统是现代软件架构中不可或缺的一部分。随着分布式系统的不断发展和扩展,数据一致性问题也逐渐成为了开发者和架构师的关注焦点。分布式事务和消息队列是解决数据一致性问题的两种常见方法之一。本文将从背景、核心概念、算法原理、代码实例、未来发展趋势和常见问题等多个方面进行深入探讨。 2.核心概念与联系 2.1分布式事务 分布式事务是指在多个节点上同时执行的一系列操作,要么全部成功...

AI天才研究院 1087
上一篇: 一个基于SpringBoot的在线教育系统「源码开源」
下一篇: 深入学习spring cloud gateway 限流熔断
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值