分布式事务及解决方案

分布式事务最经典的七种解决方案 前言: 随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题,这篇文章总结了分布式事务最经典的解决方案,分享给大家。 基础理论 在讲解具体方案之前,我们先了解一下分布式事务所涉及到的基础理论知识。 我们拿转账作为例子,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

I2C总线原理及总线信号的实现

I2C总线是一种多主机总线,连接IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;I2C总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;主要用于近距离(抗干扰能力稍弱),低速的芯片之间的通信(传输视频,带宽

YLG_lin的博客 3943

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

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

weixin_32819955的博客 1113

Python | KS检验以及其余非参数检验的实现

Python | KS检验以及其余非参数检验的实现1 什么是KS检验2 KS检验分类?3 KS检验的Python实现3.1 检验指定的数列是否服从正态分布3.2 检验指定的两个数列是否服从相同分布4 其余的非参数检验4.1 Wilcoxon符号秩检验(t检验的非参数版本)4.2 Kruskal-Wallis H检验(方差分析的非参数版本)4.3 Mann-Whitney秩检验5 参考 1 什么是KS检验 定义:检验一个分布f(x)与理论分布g(x)【比如正态分布】是否一致,或两个观测值分布是否有显著差异的检

RUC_Lee的博客 1万+

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

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

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

电价预测的Transformer实战:从注意力机制到超长序列建模

本文深入探讨了Transformer模型在电价预测领域的实战应用,对比了其与LSTM在处理长序列依赖和误差累积问题上的优劣。文章详细解析了自注意力机制的原理,并提供了处理超长序列的位置编码方法、构建专用预测模型的完整PyTorch代码,以及防止信息泄露的关键技巧。通过实战对比,展示了Transformer在并行计算、长距离建模和预测精度上的显著优势,并分享了应对极端波动和提升模型效率的高级优化策略。

f6g7h8i9j的博客 540

【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 在启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。mysql 版本 5.7.14 系统 win 7后来经过一系列的百度,谷歌,总算是解决了。首先,你需要把原来的服务删除:mysqld --remove mysq

谙忆-陈浩翔 12万+

Seata分布式事务解决方案

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

Wha1eFa11的博客 1202

OmniDrive(3):逐行代码详解

模型效果: 端到端联合规划与推理 接下来,简单介绍下训练的配置 1.1 模型配置 模型基于sparse query based的3D Bev感知框架StreamPetr ,用query来编码动态目标(如车辆、行人)和静态地图元素(如车道线)。(1) tran、test和val数据配置 指定真值的文件路径: ann_file 指定输出处理的pipeline: 训练使用, test 和val使用 指定是否需要时序训练seq_mode (2)数据处理pipeline 自定义的Dataset 通过类实现,训

@bangbang的博客 720

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

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

我的小地方 9240

【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部

本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~ 文章目录本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~一、项目展示二、项目资源共享1:训练图片:香烟图片+吸烟手势+烟雾三、

cv君的博客 13万+

SAP-ABAP:SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 深度解析与最佳实践指南

SAP MM采购订单增强核心BAdI:IF_EX_ME_PROCESS_PO_CUST 关键摘要 核心要点 技术定位:SAP MM模块采购订单处理的核心增强框架,属于第二代BAdI技术,支持多实例并行实现 架构特点: 覆盖采购订单全生命周期(创建/修改/显示) 嵌入ME21N/ME22N/ME23N的标准处理流程 提供字段级、抬头、行项目、账户分配等多层次增强点 关键方法: INITIALIZE:事务初始化时预加载数据 PROCESS_HEADER:处理抬头数据变更 PROCESS_ITEM:处理行项目字段

baidu_35680696的博客 812

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

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

wangzhipeng47的博客 2977

【38】OpenCV C++实战篇——基于多项式插值的亚像素边缘定位算法

亚像素边缘定位算法实现 本文介绍了一种基于多项式插值的亚像素边缘定位算法,用于提高图像边缘检测的精度。文章首先分析了传统像素级边缘检测方法(如Canny、Sobel)的局限性,指出其在测量应用中的精度不足问题。 算法核心 梯度计算:使用8个方向模板进行卷积运算生成梯度图像 亚像素定位:采用多项式插值方法改进边缘定位精度 实现步骤: 生成8个方向的卷积模板(0°、45°、90°等) 利用filter2D函数计算各方向梯度 通过归一化处理显示梯度图像 代码特点 提供完整的C++实现代码 包含模板生成、梯度计算和

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1099

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

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

阿里云开发者 2232

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

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

AAA 分布式事务解决方案

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

分布式事务解决方案

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

1663988740 732

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+: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、付费专栏及课程。

余额充值