分布式事务(2PC/3PC/TCC 最终一致性详解)

最终一致性分布式事务 TCC 分布式事务分布式条件下,多个节点操作的整体事务一致性。特别是在微服务场景下,业务A和业务B关联,事务A成功,事务B失败,由于跨系统,就会导致不被感知。此时从整体来看,数据是不一致的。分布式事务中的两大基本理论CAP理论与Base理论。强一致性分布式事务解决方案基于CAP理论最终一致性分布式事务解决方案基于Base理论在最终一致性分布式事务解决方案中,典型的方案包括TCCTCC。... 阅读详情

在分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。

这里对事务进行一个简单的介绍:

同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。在这种情况下我们就需要引入事务,保证转钱这两步操作要么同时成功要么同时失败,成功的情况就是同学B银行卡也收到了钱,失败的情况是回滚把钱退回给A。

我们先从强一致性的场景说起,我们先了解一下 ACID 理论:

  • Atomicity:原子性(要么全部执行,要么全部都不执行)
  • Consistency:一致性(数据库只有一个状态,不存在未确定状态)
  • Isolation:隔离性(事务之间互不干扰)
  • Durability: 永久性(事务一旦提交,数据库记录永久不变)

分布式事务实现方案也比较多(比如两阶段提交、三阶段提交、TCC等),下面我们对它们进行一些简单的介绍

2PC:两阶段提交

从名字我们可以理解到,2PC就是有两个阶段,一个是准备阶段,一个是提交阶段

Prepare阶段:协调者发起提议,问大家是否接受,这个阶段做了除提交事务外的所有事情。

分布式事务(2PC/3PC/TCC 最终一致性详解)

 

Commit阶段:根据参与者的反馈,通知大家提交或者终止事务,如果参与者全部同意就提交,只要有一个参与者不同意就终止。

分布式事务解决方案:2PCTCC以及基于消息的最终一致性 各种形态的分布式事务 分布式事务有多种主流形态,包括: 基于消息实现的分布式事务 基于补偿实现的分布式事务 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重点放在如何根据业务选择对应的分布式事务形态上。 分布式事务解决方案汇总 接下来,以一... 阅读详情

相关推荐

分布式事务2PC3PCTCC

目录 什么是2PC 关系型数据库2PC=>XA方案 分布式事务框架Seata的2PC=》AT方案 Seata的2PC和传统2PC比较 2PC的问题 什么是3PC 什么是TCC 什么是2PC 2PC即两阶段提交协议,将整个事务流程分为两个阶段:准备阶段、提交阶段。 简单来说准备阶段就执行事务代码,但不一定提交,提交阶段决定是最终提交事务还是回滚事务。 为什么要简单来说?因为基于数据库2PC分布式框架Seata的2PC有差异,不能一概而论。 关系...

我能在河边钓一整天的鱼 1705

分布式事务六种解决方案

https://zhuanlan.zhihu.com/p/183753774?utm_source=wechat_session 事务 严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称 ACID。 原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。 一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是30

只为成功找方法 不为失败找借口 1155

分布式系统】分布式事务2PC 3PC TCC 最终一致性

分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。这里对事务进行一个简单的介绍:同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。

AI天才研究院 2万+

TCC是强一致性还是最终一致性

所以,因为在调用 confirm 或 cancel 的时候也可能因为某种原因(比如网络延迟)导致调用失败,就需要通过重试等方式来解决,这个过程就会出现短暂的不一致。在理想情况下,如果所有参与组件都能正确执行其Try、Confirm和Cancel逻辑,并且系统之间的通信是可靠的那么TCC是可以提供强一致性的。Cancel阶段:如果任何Try操作失败,或者确认过程中遇到问题,执行Cancel操作来回滚所有的操作,释放锁定的资源。通过他这个通过精心设计的流程,你就能看得出他的设计尽可能确保数据的一致性

weixin_51291483的博客 663

读完这一篇,我不信你还不懂分布式事务TCC

码农在囧途 你现在的苦闷、内心斗争、理想与现实的差距,我都知道,但是我没有办法替你承担,这些都需要你自己去慢慢体会、琢磨、看开、悟透,总结,然后继续向前! 前言 前面我们说了两期分布式事务模型,分别是2PC3PC2PC模型它的效率比较低,并且会出现事务阻塞等问题,所以引入了3PC模型,3PC模型在2PC模型的基础上进行了改进,避免了事务阻塞问题,不过对于2PC3PC模型,他们依然是阻塞的,也就是说当前事务在 执行的过程中,其他事务都会被阻塞,所以实际上他们的效率都不高,如果对于并发量不发的.

qq_41875121的博客 808

两阶段提交和三阶段提交

分布式提交的问题 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。 在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突,造成事实上的数据不一致。 解决思路 可以看到,这里出现问题的主要原因是多个副本之间没有同步机制,可以增加一个协调机制来解决数据不一致问题。下面介绍的两阶段提交和三阶段提交都是通过引入一个协调者来进行协调。 两阶段提交 概述

zhengkun51的博客 3288

事务失败返回_分布式事务2PC/3PC/TCC 最终一致性详解

分布式系统中,我们一般会根据业务对服务进行划分,这就会存在一些服务间的调用关系,所以普通的本地事务是满足不了我们的要求了,需要引入分布式事务来实现我们的一致性的要求。这里对事务进行一个简单的介绍:同学A给同学B转250块钱,系统首先从同学A的银行卡扣除250块钱,如果上述这个步骤成功了,但是系统往同学B的银行卡上转250块钱的时候失败了,那么就会造成数据对不上的情况了。在这种情况下我们就需要引入...

weixin_35979889的博客 384

CAP与BASE理论及案例详解分布式系统的“不可能三角“与工程妥协

概念一句话CAP分布式系统只能在 CP 或 AP 中选一个BASEAP 架构的工程实现:基本可用 + 软状态 + 最终一致2PC/3PC强一致但性能差的"数据库级别方案"TCC性能好的"业务级别方案",开发成本高Saga长流程的"补偿型方案"事务消息最高性能的"最终一致性方案"

2401_83135864的博客 379

分布式事务:深入理解什么是2PC3PCTCC协议

1导读对于分布式事务的概念,可能还会有很多同学不理解或者理解得不是很深刻的地方,在这篇文章中,作者打算重点给大家先介绍下分布式事务相关的基本概念,诸如2PC3PC、TC...

程序员小灰的博客 4万+

七种常见分布式事务详解2PC3PCTCC、Saga、本地事务表、MQ事务消息、最大努力通知)

分布式系统中一次操作需要由多个服务协同完成,这种由不同的服务之间通过网络协同完成的事务称为分布式事务。本文详解介绍七种常见分布式事务的原理以及优缺点和适用场景(2PC3PCTCC、Saga、本地事务表、MQ事务消息、最大努力通知)

张维鹏的博客 9万+

Java面试-分布式事务解决方案:2PC3PCTCC、Saga、可靠消息最终一致性

本文系统解析了Java分布式事务的五大解决方案:2PC3PCTCC、Saga和可靠消息最终一致性。文章采用武侠风格比喻,将每种方案比作不同门派武功,深入剖析其原理、流程和适用场景。通过对比表格和流程图展示各方案的优缺点,并提供了Java代码模拟实现。最后针对电商等典型场景给出选型建议,整理了面试常见问题。全文既涵盖技术深度又具可读性,是掌握分布式事务的实用指南。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

分布式微服务云原生】掌握Java分布式事务2PC3PCTCC与Seata全解析

在现代互联网应用中,分布式事务是确保数据一致性的关键技术。本文深入探讨了分布式事务的核心技术,包括两阶段提交(2PC)、三阶段提交(3PC)、TCC(Try-Confirm-Cancel)以及Seata。读者将能够理解这些技术的原理、优缺点以及在实际项目中的应用。

Dylaniou的博客 2326

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

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

秃了也弱了 9067

分布式事务讲解 - 2PC3PCTCC

一个操作由多个不同服务器的子操作组成,分布式事务就是要保证这些子操作要不全部执行成功,要不全部执行失败。从本质上讲,分布式事务就是为了保证不同数据库的数据一致性。在2PC的第一阶段基础之上,3PC新加了一个准备阶段(上图所示),用于询问所有参与者节点是否已经准备好要进行分布式事务操作了,这一阶段没有对资源的占用,只是测试数据库是否能获取锁即可,只是保证所有参与者都有能力参与事务,如果有网络或者其他问题就不用进行第二、三阶段了。

IT枫斗者的博客 1809

分布式事务原理:2PCTCC、SAGA最终一致性

分布式事务是微服务架构的难题。用户下单扣库存减积分,如何保证一致性?服务崩溃后如何回滚?如何平衡性能和一致性?理解ACID与BASE理论、两阶段提交协议、TCC补偿机制、SAGA长事务编排、本地消息表可靠投递、最大努力通知重试,才能掌握分布式事务的本质。从"电商下单扣库存"场景出发,剖析分布式事务的核心技术。通过XA两阶段提交保证强一致性TCC三阶段补偿提升性能、SAGA事务编排处理长流程、本地消息表保证最终一致、幂等设计防止重复、事务状态机管理流程、超时补偿兜底机制,揭秘分布式事务的完整方案。

比较是偷走幸福的小偷 1496

Davids原理探究:分布式事务2PC3PCTCC、基于消息达到最终一致性

文章目录分布式事务2PC3PCTCC、基于消息达到最终一致性)二阶段提交(2PC)三阶段提交(3PCTCC(Try-Confirm-Cancel)RocketMQ基于消息达到最终一致性总结 分布式事务2PC3PCTCC、基于消息达到最终一致性) 二阶段提交(2PC) 第一阶段:请求/表决阶段 在分布式事务发起者向分布式事务协调者发送请求的时候,事务协调者向所有参与者发送事务预处理请求(vote request)。 这个时候参与者会开启本地事务并开始执行本地事务,执行完成后不会commit,

Davids_的博客 4185

分布式事务解决方案() 2PC3PCTCC、Sega

本文讲了,2PC3PCTCC、Sega这4中分布式事务的实现方式,它其实对应的就是seata的AT、XA、TCC和sega模式。上述四种方式都是2pc的变种,他们都支持事务执行失败或者成功。这是后文将要介绍的通过消息方式来保证最终一致性的方式的本质区别。那他们分别适合于什么场景呢?XA模式是标准的2PC,在第一阶段会锁定资源,在第二阶段才会进行提交,所以它的一致性是最强的,但是性能相对偏低。

zhifou123456的博客 1952
上一篇: 面试官:小伙子我们先来详细的好好聊一聊NIO的三大组件
下一篇: 答应我不要再用Xshell了 这个新开源的终端工具酷炫又好用
爱玛士
博客等级 码龄6年 719粉丝 253原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值