分布式事务理解

深入理解分布式技术 - 分布式事务总结回顾 文章目录常见问题 常见问题 数据一致性和分布式事务是互联网分布式系统设计中必须要考虑的,所以对分布式事务的考察是中高级工程师面试必须跨过的一道门槛。 面试官通常会通过一个实际的系统设计题来展开提问,以考察候选人对分布式基础理论的理解、对各种数据一致性模型的掌握,以及对分布式下事务实现的原理、机制和各种实现手段的熟悉程度。 下面我模拟一个实际的面试场景,面试官可能会对你提出以下一连串的问题,可以检测一下自己在学习中的掌握程度: 请说说你对分布式系统 CAP 理论的理解,CAP 分别代表什么含义? 阅读详情

一、分布式事务

分布式事务就是一个业务操作,是由多个细分操作完成的,而这些细分操作又分布在不同的服务器上;事务,就是这些操作要么全部成功执行,要么全部不执行。

 

二、数据库事务

数据库事务的特性包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durabilily),简称 ACID。

在数据库执行中,多个并发执行的事务如果涉及到同一份数据的读写就容易出现数据不一致的情况,不一致的异常现象有以下几种。

 

脏读,是指一个事务中访问到了另外一个事务未提交的数据。例如事务 T1 中修改的数据项在尚未提交的情况下被其他事务(T2)读取到,如果 T1 进行回滚操作,则 T2 刚刚读取到的数据实际并不存在。

 

不可重复读,是指一个事务读取同一条记录 2 次,得到的结果不一致。例如事务 T1 第一次读取数据,接下来 T2 对其中的数据进行了更新或者删除,并且 Commit 成功。这时候 T1 再次读取这些数据,那么会得到 T2 修改后的数据,发现数据已经变更,这样 T1 在一个事务中的两次读取,返回的结果集会不一致。

 

幻读,是指一个事务读取 2 次,得到的记录条数不一致。例如事务 T1 查询获得一个结果集,T2 插入新的数据,T2 Commit 成功后,T1 再次执行同样的查询,此时得到的结果集记录数不同。

 

不同隔离级别

SQL 标准根据三种不一致的异常现象,将隔离性定义为四个隔离级别(Isolation Level),隔离级别和数据库的性能呈反比,隔离级别越低,数据库性能越高;而隔离级别越高,数据库性能越差,具体如下:

 

(1)Read uncommitted 读未提交

在该级别下,一个事务对数据修改的过程中,不允许另一个事务对该行数据进行修改,但允许另一个事务对该行数据进行读,不会出现更新丢失,但会出现脏读、不可重复读的情况。

 

(2)Read committed 读已提交

在该级别下,未提交的写事务不允许其他事务访问该行,不会出现脏读,但是读取数据的事务允许其他事务访问该行数据,因此会出现不可重复读的情况。

 

(3)Repeatable read 可重复读

在该级别下,在同一个事务内的查询都是和事务开始时刻一致的,保证对同一字段的多次读取结果都相同,除非数据是被本身事务自己所修改,不会出现同一事务读到两次不同数据的情况。因为没有约束其他事务的新增Insert操作,所以 SQL 标准中可重复读级别会出现幻读。

值得一提的是,可重复读是 MySQL InnoDB 引擎的默认隔离级别,但是在 MySQL 额外添加了间隙锁(Gap Lock),可以防止幻读。

 

(4)Serializable 串行化

该级别要求所有事务都必须串行执行,可以避免各种并发引起的问题,效率也最低。

 

 

  • 分布式事务产生的原因

   在实际开发中,分布式事务产生的原因主要来源于存储和服务的拆分

  1. 分布式存储产生的事务问题

      

   当业务量到达一定数据量就要考虑存储的分库分表。存储层拆分,最典型的就是数据库分库分表。在业务中如果需要进行跨库或者跨表写操作,同时要保证数据的一致性,就产生了分布式事务问题。

 

  1. 服务拆分引起的事务问题

   

当服务从单体架构拆分成微服务后,由于一个操作往往会需要调用多个服务进行协同处理,此时也会引起分布式事务问题。比如电商用户下单操作,就会涉及到会员、订单、库存和支付等服务的调用,这几个操作如果有一个失败,那下单操作也就完不成,这就需要分布式事务来保证了。

 

 

 

四、分布式事务解决方案

分布式事务的解决方案,典型的有两阶段和三阶段提交协议、 TCC 分段提交,和基于消息队列的最终一致性设计。

 

2PC 两阶段提交

两阶段提交(2PC,Two-phase Commit Protocol)是非常经典的强一致性、中心化的原子提交协议,在各种事务和一致性的解决方案中,都能看到两阶段提交的应用。

 

3PC 三阶段提交

三阶段提交协议(3PC,Three-phase_commit_protocol)是在 2PC 之上扩展的提交协议,主要是为了解决两阶段提交协议的阻塞问题,从原来的两个阶段扩展为三个阶段,增加了超时机制。

 

TCC 分段提交

TCC 是一个分布式事务的处理模型,将事务过程拆分为 Try、Confirm、Cancel 三个步骤,在保证强一致性的同时,最大限度提高系统的可伸缩性与可用性。

 

基于消息队列的最终一致性

 

 

异步化在分布式系统设计中随处可见,基于消息队列的最终一致性就是一种异步事务机制,在业务中广泛应用。

 

文章主要整理自以下课程,如果想系统学习分布式技术原理与实战,可点击:

https://skaygo.blog.youkuaiyun.com/article/details/113850871

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program 阅读详情

相关推荐

用PLECS搞定三相逆变器电流环:从传递函数推导到PI参数整定的保姆级教程

本文提供了一份详细的PLECS教程,指导如何从传递函数推导到PI参数整定,实现三相逆变器电流环的闭环控制。通过坐标变换、控制器设计和仿真验证等步骤,帮助工程师快速掌握电流环控制技术,提升电力电子系统的稳定性和可靠性。

weixin_27102543的博客 399

分布式事务的理解

事务 数据库事务:是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成 通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性...

Lyzxii 1105

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1580

什么是分布式事务?

分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理,这些数据库或应用程序可能分布在不同的物理节点上,甚至可能位于不同的地理位置。在分布式事务中,需要确保所有参与者的事务操作都能够保持一致性,即所有参与者的事务要么全部提交成功,要么全部回滚。本文探讨多种分布式事务的实现方式。

小徐的博客 1294

物理机centos7系统重启后直接进入dracut

Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot

魏志标的博客 1万+

海康视觉平台VisionMaster实战入门:从通讯配置到工具应用

本文为海康VisionMaster视觉平台实战入门指南,详细介绍了从软件安装准备、与PLC等外部设备的通讯配置,到匹配定位、测量、畸变矫正等核心工具的应用方法。通过实战案例拆解,帮助工程师快速掌握如何搭建完整的机器视觉检测与引导定位系统,实现工业自动化项目落地。

weixin_29224309的博客 1021

【分布式事务】分布式事务

一、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据存储的数据一致性。 二、分布式事务产生的原因 2.1 数据库分别库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表。这时候,如果一个操作既访问01库,又访

wuychn 1万+

音视频OSD——使用freetype将矢量字库的信息叠加至YUV

目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUV freetypes FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件 下载freetypes tar -xjf freetype-2.4.10.tar.bz2 cd freetype-2.4.10/ ./configure

路人coder 2365

什么是分布式事务

分布式事务是指涉及多个独立的系统或服务之间的事务操作,这些系统或服务可以位于不同的物理节点、网络或数据库中。在分布式系统中,由于每个节点或服务都有自己的本地事务,因此需要一种机制来保证所有涉及的系统或服务在一个事务中具有一致性和原子性。传统的关系型数据库事务(例如 ACID)通常只适用于单个数据库实例,无法满足分布式系统中跨多个数据库或服务的事务需求。因此,分布式事务需要使用特定的技术和协议来保证事务的一致性和可靠性。

刘皇叔说Java的博客 1240

YOLOv11改进 | 细节涨点篇 | DySample一种最新的轻量化动态上采样算子(效果完爆CARAFE)

本文给大家带来的最新改进机制是一种号称超轻量级且有效的动态上采样器——DySample。与传统的基于内核的动态上采样器相比,DySample采用了一种基于点采样的方法,相比于以前的基于内核的动态上采样器,DySample具有更少的参数、浮点运算次数、GPU内存和延迟。此外,DySample在包括语义分割、目标检测、实例分割、全景分割和单目深度估计在内的五个预测任务中,性能均优于其他上采样器(截至目前最有效的上采样算子),

Snu77的博客 4213

深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image

深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image The Winning Solution to the iFLYTEK Challenge 2021 Cultivated Land Extraction from High-Resolution Remote Sensing Image PDF: https://arxiv.org/pdf/2202.10974.pdf PyTorch代码: https:

mingo_敏 3482

什么是分布式事务?常用的分布式事务的解决方案有哪些什么?各有什么优缺点?

分布式事务 一、分布式事务介绍 1.1 什么是事务 数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成[由当前业务逻辑多个不同操作构成]。 事务拥有以下四个特性,习惯上被称为ACID特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,

CR.奈斯的博客 4425

C#实现Socket通信同时监听多客户端(附完整源码)

C#实现Socket通信同时监听多客户端(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 428

深入理解分布式事务,高并发下分布式事务的解决方案

深入理解分布式事务,高并发下分布式事务的解决方案

weixinhmz的博客 200

visio安装包

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

分布式事务各种技术的理解

开发至今项目中从来有没有用过分布式事务,之前对分布式事务的理解,都是从网上到处看,到处翻,从来也没有系统的看过。借着研究SpringColudNacos源码的时候,无意间看到了阿里巴巴的Seata项目。也就顺便研究了一下原理。 为了应付面试,从网上到处找分布式事务相关的内容,一会看PC,一会又翻到TCC。看了一堆原理,文章质量参差不齐,不清楚他们之间的关系,有时候把协议当成框架,有时候又把框架当成算法。又不知道怎么运用到实际开发环境当中去。面试的时候基本也在瞎扯。 整体梳理了一遍之后,我总结一下对分布式事务

fypinouyaboy的专栏 210

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

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

分布式事务开山之作——《深入理解分布式事务:原理与实战》草图曝光!!

《深入理解分布式事务:原理与实战》草图曝光,快来围观吧!!

冰河的专栏 2178

如何理解分布式事务

1.什么是事务? 2.换个角度看事务 3.Java中的事务 4.啥又是分布式事务? 5.分布式事务的几种实现思路 6.总结 写在前面 在分布式、微服务大行其道的今天,相信大家对这些名词都不会陌生。而说到使用分布式,或者拆分微服务的好处,你肯定能想到一大堆。 比如每个人只需要维护自己单独的服务,没有了以前的各种代码冲突。自己想测试、想发布、想升级,只需要care自己写的代码就OK了,很方便很贴心! ...

xmh_sxh_1314的博客 324

【转】理解分布式事务

地址: https://juejin.im/post/5c0e5bf8e51d45063322fe50#heading-24 文章首发于51CTO技术栈公众号 作者 陈彩华 文章转载交流请联系 caison@aliyun.com 1 什么是事务 介绍分布式事务之前,先介绍什么是事务。 事务的具体定义   事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只...

路漫漫其修远兮 594

关于分布式事务的理解

我第一次引入了 CAP 定理,希望你能通过事务处理的上下文场景去理解它。这套理论不仅是在事务处理中,而且在一致性、共识,乃至整个分布式所有涉及到数据的知识点中,都有重要的应用,后面讲到分布式共识算法、微服务中多种基础设施等内容的时候,我们还会多次涉及到它。

eck_燃的博客 478

理解分布式事务

一、什么是事务 介绍分布式事务之前,先介绍什么是事务。 1、事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。 简单地说,事务提供一种“ 要么什么都不做,要么做全套(All or Nothing)”机制。 2、数据库事务的ACID属性 参考:http...

青萍之末的博客 426

深入理解分布式事务

转载:https://blog.youkuaiyun.com/yuliying/article/details/52813169 1、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小...

qq5132834的专栏 205

深入理解TiDB的分布式事务机制

深入理解TiDB的分布式事务机制 【免费下载链接】tidb TiDB 是一个分布式关系型数据库,兼容 MySQL 协议。* 提供水平扩展能力;支持高并发、高可用、在线 DDL 等特性。* 特点:分布式架构设计;支持 MySQL 生态;支持 SQL 和 JSON 数据类型。 ...

gitblog_00757的博客 796

分布式事务基础概念理解

分布式事务是跨服务或跨节点的数据一致性机制,分为两种场景:微服务架构下跨独立数据库的业务协调(如电商下单涉及订单、库存、支付等服务),以及分布式数据库系统中跨物理节点的数据操作原子性(如分片数据库的多节点写入)。其理论基础是CAP(一致性、可用性、分区容错性三选二)和BASE(基本可用、软状态、最终一致性),通过牺牲强一致性换取系统可用性。微服务分布式事务侧重业务数据一致性,而分布式系统事务侧重数据库层面的ACID保证。

lqq1667821818的博客 541
上一篇: 分布式之Paxos算法
下一篇: 分布式事务常用的解决方案
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值