分布式事务及解决方案

分布式事务最经典的七种解决方案 前言: 随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题,这篇文章总结了分布式事务最经典的解决方案,分享给大家。 基础理论 在讲解具体方案之前,我们先了解一下分布式事务所涉及到的基础理论知识。 我们拿转账作为例子,A需要转100元给B,那么需要给A的余额-100元,给B的余额+100元,整个转账要保证,A-100和B+100同时成功,或者同时失败。看看在各种场景下,是如何解决这个问题的。 事务 把多条语句作 阅读详情

什么是分布式事务

什么是分布式

分布式是指将一个任务或应用程序分割成多个部分,并在多台计算机上同时执行这些部分。分布式系统可以提高计算能力、资源利用率和可扩展性。

什么是事务

在计算机科学中,事务是指作为单个逻辑工作单元执行的一系列操作。这些操作要么全部成功执行,要么全部失败,不存在中间状态。事务具有 ACID 属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

  • 原子性(Atomicity): 事务中的所有操作要么全部执行成功,要么全部失败。如果其中一个操作失败,整个事务将被回滚,使数据保持一致性。

  • 一致性(Consistency): 事务的执行使系统从一个一致性状态转移到另一个一致性状态。即,事务执行的结果必须符合系统预定义的一致性规则。

  • 隔离性(Isolation): 事务的执行是相互隔离的,一个事务的执行不能被其他事务干扰。这意味着事务之间的操作应该相互独立,一个事务对数据的修改在另一个事务看来是不可见的,直到第一个事务提交。

  • 持久性(Durability): 一旦事务提交,其结果应该持久保存在系统中,即使在系统发生故障或重启时也不会丢失。

什么是分布式事务

分布式事务是指涉及多个节点、服务或数据库的事务操作。在分布式系统中,由于涉及到网络通信、不同节点的数据库等因素,保证 ACID 属性变得更加复杂。分布式事务的目标是确保所有参与者都能够按照一致的方式执行事务,即使在面临网络故障、节点故障等问题时也能保持数据的一致性。

为什么会有分布式事务?

假设有一个在线购物系统,该系统涉及到多个服务和数据库,包括订单服务、支付服务和库存服务。用户下单时,系统需要确保订单的创建、支付的扣款和库存的减少都是一个原子操作,以保证数据的一致性。

在这种场景下,如果【采用传统的单机事务】,可能会存在性能瓶颈,而且不适用于分布式环境。因此,引入了分布式事务来确保整个购物过程的一致性。

举例说明:

1. 用户下单:用户在前端下单,订单服务收到创建订单的请求。

2. 创建订单:订单服务负责在订单数据库中创建订单记录。

3. 扣款:订单创建成功后,支付服务负责进行支付操作,从用户账户中扣款。

4. 减库存:支付成功后,库存服务负责减少商品库存。

在上述过程中,如果在创建订单之后扣款操作失败,或者扣款成功后减库存操作失败,就可能导致数据不一致的情况。为了解决这个问题,可以引入分布式事务。

使用分布式事务的步骤可能包括:

1. 全局事务协调:引入一个全局事务管理器,负责协调各个参与者(订单服务、支付服务、库存服务)的事务。这可以使用两阶段提交(2PC)等协议。

2. 事务参与者:订单服务、支付服务和库存服务作为事务的参与者,在全局事务协调下执行各自的本地事务。

3. 事务的提交或回滚:在所有本地事务执行完成后,根据每个参与者的反馈,全局事务协调器决定提交或回滚整个分布式事务。如果任何一个参与者反馈失败,整个事务会回滚,以保证数据的一致性。

这样,通过引入分布式事务机制,系统可以在多个服务之间保持一致性,确保订单创建、支付和库存操作要么全部成功,要么全部失败。这是分布式事务在实际场景中的一个简单示例。

分布式事务是指一个事务的操作涉及多个资源管理器,这些资源管理器可能位于不同的服务器上,甚至不同的网络上。分布式事务需要保证所有操作要么全部成功,要么全部失败,以保持数据的一致性。

分布式事务的难点

  • 协调性: 如何保证所有资源管理器都按照预期的顺序执行操作,并且最终达成一致。
  • 可靠性: 如何保证即使发生故障,也要保证事务的完整性和一致性。
  • 性能: 如何尽可能减少分布式事务对系统性能的影响。

分布式事务的解决方案

  • 两阶段提交 (2PC): 2PC 是解决分布式事务问题的经典方案,它将事务分为两个阶段: 准备阶段和提交阶段。在准备阶段,协调器询问所有资源管理器是否可以提交事务。如果所有资源管理器都同意,则协调器通知所有资源管理器提交事务。如果任何一个资源管理器不同意,则协调器通知所有资源管理器回滚事务。
  • 三阶段提交 (3PC): 3PC 是 2PC 的改进方案,它在 2PC 的基础上增加了一个“预提交”阶段。在预提交阶段,协调器询问所有资源管理器是否可以准备提交事务。如果所有资源管理器都同意,则协调器通知所有资源管理器进入准备状态。如果任何一个资源管理器不同意,则协调器通知所有资源管理器回滚事务。
  • XA 协议: XA 协议是一种标准的事务处理协议,它可以用于解决分布式事务问题。XA 协议定义了两个角色: 事务管理器和资源管理器。事务管理器负责协调事务的执行,资源管理器负责管理具体的资源。
  • 最终一致性: 最终一致性是一种弱一致性模型,它允许数据在短期内存在不一致,但最终会一致。最终一致性通常用于对数据一致性要求不高的场景。

在 2000 年以前,人们曾经寄希望于 XA(eXtended Architecture) 的事务机制可以在本节所说的分布式环境中也能良好地应用,但这个美好的愿望今天已经被 CAP 理论彻底地击碎了,接下来就先从 CAP 与 ACID 的矛盾说起。

CAP 与 ACID

CAP 定理(Consistency、Availability、Partition Tolerance Theorem),也称为 Brewer 定理,起源于在 2000 年 7 月,是加州大学伯克利分校的 Eric Brewer 教授于“ACM 分布式计算原理研讨会(PODC)”上提出的一个猜想。

                                          图 CAP 理论原稿(那时候还只是猜想)

两年之后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 以严谨的数学推理证明了 CAP 猜想。自此,CAP 正式从猜想变为分布式计算领域所公认的著名定理。这个定理里描述了一个分布式的系统中,涉及共享数据问题时,以下三个特性最多只能同时满足其中两个:

  • 一致性(Consistency):代表数据在任何时刻、任何分布式节点中所看到的都是符合预期的。一致性在分布式研究中是有严肃定义、有多种细分类型的概念,以后讨论分布式共识算法时,我们还会再提到一致性,那种面向副本复制的一致性与这里面向数据库状态的一致性严格来说并不完全等同,具体差别我们将在后续分布式共识算法中再作探讨。
  • 可用性(Availability):代表系统不间断地提供服务的能力,理解可用性要先理解与其密切相关两个指标:可靠性(Reliability)和可维护性(Serviceability)。可靠性使用平均无故障时间(Mean Time Between Failure,MTBF)来度量;可维护性使用平均可修复时间(Mean Time To Repair,MTTR)来度量。可用性衡量系统可以正常使用的时间与总时间之比,其表征为:A=MTBF/(MTBF+MTTR),即可用性是由可靠性和可维护性计算得出的比例值,譬如 99.9999%可用,即代表平均年故障修复时间为 32 秒。
  • 分区容忍性(Partition Tolerance):代表分布式环境中部分节点因网络原因而彼此失联后,即与其他节点形成“网络分区”时,系统仍能正确地提供服务的能力。

CAP 不可兼得,如果舍弃 C、A、P 时所带来的不同影响。

  • 如果放弃分区容忍性(CA without P),意味着我们将假设节点之间通信永远是可靠的。永远可靠的通信在分布式系统中必定不成立的,这不是你想不想的问题,而是只要用到网络来共享数据,分区现象就会始终存在。在现实中,最容易找到放弃分区容忍性的例子便是传统的关系数据库集群,这样的集群虽然依然采用由网络连接的多个节点来协同工作,但数据却不是通过网络来实现共享的。以 Oracle 的 RAC 集群为例,它的每一个节点均有自己独立的 SGA、重做日志、回滚日志等部件,但各个节点是通过共享存储中的同一份数据文件和控制文件来获取数据的,通过共享磁盘的方式来避免出现网络分区。因而 Oracle RAC 虽然也是由多个实例组成的数据库,但它并不能称作是分布式数据库。
  • 如果放弃可用性(CP without A),意味着我们将假设一旦网络发生分区,节点之间的信息同步时间可以无限制地延长,此时,问题相当于退化到前面“全局事务”中讨论的一个系统使用多个数据源的场景之中,我们可以通过 2PC/3PC 等手段,同时获得分区容忍性和一致性。在现实中,选择放弃可用性的 CP 系统情况一般用于对数据质量要求很高的场合中,除了 DTP 模型的分布式数据库事务外,著名的 HBase 也是属于 CP 系统,以 HBase 集群为例,假如某个 RegionServer 宕机了,这个 RegionServer 持有的所有键值范围都将离线,直到数据恢复过程完成为止,这个过程要消耗的时间是无法预先估计的。
  • 如果放弃一致性(AP without C),意味着我们将假设一旦发生分区,节点之间所提供的数据可能不一致。选择放弃一致性的 AP 系统目前是设计分布式系统的主流选择,因为 P 是分布式网络的天然属性,你再不想要也无法丢弃;而 A 通常是建设分布式的目的,如果可用性随着节点数量增加反而降低的话,很多分布式系统可能就失去了存在的价值,除非银行、证券这些涉及金钱交易的服务,宁可中断也不能出错,否则多数系统是不能容忍节点越多可用性反而越低的。目前大多数 NoSQL 库和支持分布式的缓存框架都是 AP 系统,以 Redis 集群为例,如果某个 Redis 节点出现网络分区,那仍不妨碍各个节点以自己本地存储的数据对外提供缓存服务,但这时有可能出现请求分配到不同节点时返回给客户端的是不一致的数据。

读到这里,不知道你是否对“选择放弃一致性的 AP 系统目前是设计分布式系统的主流选择”这个结论感到一丝无奈,本章讨论的话题“事务”原本的目的就是获得“一致性”,而在分布式环境中,“一致性”却不得不成为通常被牺牲、被放弃的那一项属性。但无论如何,我们建设信息系统,终究还是要确保操作结果至少在最终交付的时候是正确的,这句话的意思是允许数据在中间过程出错(不一致),但应该在输出时被修正过来。为此,人们又重新给一致性下了定义,将前面我们在 CAP、ACID 中讨论的一致性称为"强一致性(Strong Consistency)"、而把牺牲了 C 的 AP 系统又要尽可能获得正确的结果的行为称为追求“弱一致性”。不过,如果单纯只说“弱一致性”那其实就是“不保证一致性”的意思……人类语言这东西真的是博大精深。在弱一致性里,人们又总结出了一种稍微强一点的特例,被称为"最终一致性(Eventual Consistency)",它是指:如果数据在一段时间之内没有被另外的操作所更改,那它最终将会达到与强一致性过程相同的结果。

从之前的强一致性,降低为追求获得“最终一致性”。由于一致性的定义变动,“事务”一词的含义其实也同样被拓展了,人们把使用 ACID 的事务称为“刚性事务”,下面将要介绍几种分布式事务的常见做法统称为“柔性事务”。

分布式事务的柔性做法

在分布式系统中,由于 CAP 理论的限制,不可能同时满足强一致性、可用性和分区容错性。为了在满足可用性和分区容错性的前提下,尽可能地保证数据一致性,人们提出了一些分布式事务的柔性做法,也称为“柔性事务”。

柔性事务的常见做法包括:

  • 最终一致性: 最终一致性是一种弱一致性模型,它允许数据在短期内存在不一致,但最终会一致。最终一致性可以通过数据异步复制、定期数据同步等方式实现。最终一致性的概念是 eBay 的系统架构师 Dan Pritchett 在 2008 年在 ACM 发表的论文《Base: An Acid Alternative》中提出的,该论文总结了一种独立于 ACID 获得的强一致性之外的、使用 BASE 来达成一致性目的的途径。
  • TCC 事务: TCC 事务是一种两阶段提交协议,它将事务分为 Try、Confirm 和 Cancel 三个阶段。在 Try 阶段,事务参与者检查资源是否可用并进行预留。在 Confirm 阶段,事务参与者提交事务。在 Cancel 阶段,事务参与者回滚事务。TCC 是另一种常见的分布式事务机制,它是“Try-Confirm-Cancel”三个单词的缩写,是由数据库专家 Pat Helland 在 2007 年撰写的论文《Life beyond Distributed Transactions: An Apostate’s Opinion》中提出。
  • SAGA 事务: SAGA 事务是一种补偿事务,它将事务分为多个子事务,每个子事务都具有补偿操作。如果某个子事务失败,则可以执行补偿操作来恢复数据一致性。它源于 1987 年普林斯顿大学的 Hector Garcia-Molina 和 Kenneth Salem 在 ACM 发表的一篇论文《SAGAS》(这就是论文的全名)。文中提出了一种提升“长时间事务”(Long Lived Transaction)运作效率的方法,大致思路是把一个大事务分解为可以交错运行的一系列子事务集合。原本 SAGA 的目的是避免大事务长时间锁定数据库的资源,后来才发展成将一个分布式环境中的大事务分解为一系列本地事务的设计模式。

柔性事务的优缺点:

优点:

  • 可用性高: 柔性事务通常可以牺牲一致性来保证可用性。
  • 性能好: 柔性事务通常比强一致性事务的性能更好。

缺点:

  • 一致性弱: 柔性事务只能保证最终一致性,无法保证强一致性。
  • 实现复杂: 柔性事务的实现比强一致性事务更复杂。

柔性事务的应用场景:

  • 对一致性要求不高,但对可用性和性能要求较高的场景: 例如社交网络、电商平台等。
  • 数据可以异步更新的场景: 例如数据仓库、日志分析等。

以下是一些选择柔性事务的建议:

  • 对一致性要求较高的场景,不建议使用柔性事务。
  • 对可用性和性能要求较高的场景,可以考虑使用柔性事务。
  • 在选择柔性事务之前,需要仔细评估业务需求。

分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ 最早的分布式事务应用架构很简单,不涉及服务间的访问调用,仅仅是服务内操作涉及到对多个数据库资源的访问。当一个服务操作访问不同的数据库资源,又希望对它们的访问具有事务特性时,就需要采用分布式事务来协调所有的事务参与者。对于上面介绍的分布式事务应用架构,尽管一个服务操作会访问多个数据库资源,但是毕竟整个事务还是控制在单一服务的内部。如果一个服务操作需要调用另外一个服务,这时的事务就需要跨越多个服务了。四种模式,https1.4.01.2.0Seata是什么?一阶段,这些就不再赘述了。总之,... 阅读详情

相关推荐

JAVA面试相关三(分布式事务)

今天讲一讲面试当中经常说到的分布式事务的一些解决方案,供大家参考。 分布式事务了解吗? 你们是如何解决分布式事务问题的? 只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。 现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要...

进击的烧饼 855

分布式事务原理及解决方案

1 引言 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕单机事务,分布式事务以及分布式事务的处理方式来展开。 2 事务 事务提供一种“要么什么都不做,要么做全套(All or Nothing)”的机制,她有ACID四大特性 原子性(Atomicity):事务作为一个整体被执行,包含在其中...

weixin_34199335的博客 3079

【分布式事务】一、分布式事务概念、解决方案,一文彻底搞懂分布式事务

【分布式事务】分布式事务概念、解决方案,一文彻底搞懂分布式事务

技术分享博客,工作经验,技能学习分享(多做一些不会的,会有意向不到的收获,IT高手不可能永远只做会的) 2293

分布式事务详解【分布式事务的几种解决方案】彻底搞懂分布式事务

什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。明白上述例子,再来看事务的定义:事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。

yygr的博客 1万+

【分布式事务】互联网分布式事务解决方案

文章目录1. 什么是分布式事务?2.分布式事务产生的原因:3.事务的ACID特性4.分布式系统的特性5.常见的分布式事务解决方案**5.1.2pc****5.2.TCC****5.2.eBay模式消息最终一致性** 1. 什么是分布式事务? 一次操作会分布到不同的服务器上的不同应用,例如用户购买商品,会涉及到商品系统,订单系统,此时要保证商品较少,同时把这些商品添加到订单服务系统中,这两部操作要么...

努力发光呀 586

Cartographer纯定位实战:从仿真到真机部署的避坑指南

本文详细介绍了将Cartographer算法应用于机器人纯定位模式的完整实战流程。通过对比传统AMCL方案的不足,阐述了Cartographer基于子图匹配实现高精度、高鲁棒性定位的优势。内容涵盖从仿真环境测试到真机部署的核心步骤,包括关键配置文件修改、源码调整以及参数调优,旨在帮助开发者避开常见陷阱,成功实现稳定可靠的机器人定位系统。

weixin_29063681的博客 251

聊聊分布式事务,再说说解决方案

来源:https://www.cnblogs.com/savor…作者:Savorboard 前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 [ CAP](http://www.cnblogs.com/savorb… 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每...

weixin_32819955的博客 1113

linux下使用Ollama本地部署LLM

Ollama 是一个用于在本地运行大语言模型(如 Llama 2、Mistral、Gemma、Qwen 等)的工具,支持模型的拉取、运行、管理等功能。当你运行ollama。

u013218342的博客 1660

分布式事务的解决方案总结

一、分布式事物 1.1 数据库事务 原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID 1.2 分布式事物产生原因 分布式事物产生的原因 分布式事务产生的场景 在分布式系统,都会垂直拆分数据库,分为支付数据库、订单数据库、积分数据库、优惠全数据库等,业务组成,分为多...

做最专业的总结 大师 1万+

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 742

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8060

Seata分布式事务解决方案

本地事务,也就是传统的。

Wha1eFa11的博客 1202

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

分布式事务解决方案全解析

对于刚刚接触分布式系统的伙伴来说,分布式看起来非常高大上、深不可测。目前已有Dubbo、SpringCloud等较好的分布式框架,但分布式事务仍是分布式系统一大痛点,本文结合一些经典博客文章,简单解析一些常见的分布式事务解决方案。

我的小地方 9240

AF3 ProteinDataset类的_patch方法解读

AlphaFold3 protein_dataset模块 ProteinDataset 类  _patch 方法的主要目的是围绕锚点残基(anchor residues)裁剪蛋白质数据,提取一个局部补丁(patch)作为模型输入。

qq_27390023的博客 1148

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1543

常用的分布式事务解决方案

首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 常用的分布式事务解决方案 凌澜星空2018-03-11 14:44:5575315收藏466 分类专栏:架构高性能网站微服务项目实战文章标签:微服务分布式架构事务一致性 版权 众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的...

wangzhipeng47的博客 2977

YOLO11 改进、魔改|分组残差自注意力GRSA,通过分组残差优化 QKV 计算、指数空间映射优化位置偏差,在大幅降低自注意力模块参数和计算量的同时,增强特征关系与位置信息的表征能力

【摘要】研究人员提出GRSA(分组残差自注意力)机制,解决Transformer在图像超分辨率任务中效率与性能难以兼顾的问题。GRSA通过分组残差层减少自注意力参数冗余,同时采用指数空间相对位置偏差优化位置信息表征。实验表明,GRSA在降低50%参数量的同时保持模型性能,适用于目标检测和图像分割任务。在YOLO系列模型中集成GRSA可提升小目标检测精度,代码实现已开源,详细部署教程见相关视频与GitHub资源。该机制为轻量化Transformer模型提供了高效解决方案。

qq_64693987的博客 798

如何选择分布式事务解决方案?

简介: 分布式事务中涉及的参与者分布在异步网络中,参与者通过网络通信来达到分布式一致性,网络通信不可避免出现失败、超时的情况,因此分布式事务的实现比本地事务面临更多的困难。本文归纳总结五种分布式事务解决方案,并剖析其特点。较长,同学们可收藏后再看。(文末福利:Java 程序员学习清单 概述 事务是一组不可分组的操作集合,这些操作要么都成功执行,要么都取消执行。最典型的需要事务的场景是银行账户间的转账:假如 A 账户要给 B 账户转账 100 元,那么 A 账户要扣减 100 元,B 账户要增加 1

阿里云开发者 2232

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AAA 分布式事务解决方案

本地事务在单个数据库上执行的事务,可以利用关系型数据库本身提供的事务特性来实现事务管理。事务的四大特性 ACID1. 原子性:事务是一个不可分割的执行单元,要么全部执行成功,要么全部回滚。2. 一致性:使数据库从一个一致性状态转变到另一个一致性状态。3. 隔离性:事务的执行是相互独立的,互不干扰。4. 持久性:事务的执行结果必须是持久化保存的,事务一旦提交,改变是永久的。事务并发执行的问题1. 丢失更新:[ 写-写 ]2. 读脏数据:[ 写-读 ] 读到尚未提交的数据。

很多时候犯错都是在不知情的情况下发生的 822

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

分布式事务解决方案

分布式事务解决方案 1.分布式事务解决方案-面试 ​ 刚才编写的扣减库存与保存订单是在两个服务中存在的,如果扣减库存后订单保存失败了是不会回滚的,这样就会造成数据不一致的情况,这其实就是我们所说的分布式事务的问题,接下来我们来学习分布式事务的解决方案。 1.1 本地事务与分布式事务 1.1.1 事务 数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 事务拥有以下四个特性,习惯上被称为ACID特性: 原子性(Atomicity):事务

1663988740 732

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

分布式事务最经典的八种解决方案

分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分布式事务最经典的八种解决方案分

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 8121

分布式事务以及解决方案

当下互联网发展如火如荼,绝大部分公司都进行了数据库拆分和服务化(SOA)。在这种情况下,完成某一个业务功能可能需要横跨多个服务,操作多个数据库。这就涉及到到了分布式事务,用需要操作的资源位于多个资源服务器上,而应用需要保证对于多个资源服务器的数据的操作,要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。典型的分布式事务场景:跨库事务、分库分表、微服务Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

Archer(久遇)的博客 1999
上一篇: golang的内存管理的原理,简述go内存管理机制
下一篇: Spring Boot 应用如何优雅关闭
byteinit
博客等级 码龄17年 326粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值