事务:分布式事务与本地事务的区别

news2025/1/20 3:42:35

分布式事务章节

分布式事务:2PC与3PC的区别-CSDN博客

分布式事务:X/Open DTP分布式事务处理模型与分布式事务处理XA规范-CSDN博客

事务简介

事务(Transaction)是操作数据库中某个数据项的一个程序执行单元(unit)。事务是由一组操作构成的可靠的独立的工作单元,事务应该具有4个属性:(A)原子性、(C)一致性、(I)隔离性、(D)持久性。这四个属性通常称为ACID特性。

事务的四个特征:

1、Atomic原子性

事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全部不执行,任何一项失败,整个事务回滚,只有全部都执行成功,整个事务才算成功。

2、Consistency一致性

事务的执行不能破坏数据库数据的完整性和一致性,事务在执行之前和之后,数据库都必须处于一致性状态。

3、Isolation隔离性

在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰。自身的数据是不会被其他的并发事务修改数据的。

4、Durability持久性

持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久性的。即使发生系统崩溃或机器宕机,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束时的状态。

本地事务与分布式事务的区别

本地事务分布式事务
支持特性严格的ACIDCAP理论中的中的CP或者AP
一致性范围只能是单一的资源多个资源
复杂性简单复杂(通过复杂的协议及通信来确保一致性,故障处理难度高)
性能低(多个资源之间的通信及自身事务的性能都会有影响)

什么是本地事务

整个服务操作只能涉及一个单一的数据库资源或者资源管理器中执行的一些列数据库操作,这类基于单一资源操作单元的访问,并且由资源管理器本地管理被称为本地事务。本地事务的优点就是支持严格的ACID特性,高效,可靠,状态可以只在资源管理器中维护,而且应用编程模型简单。在一个本地事务中,事务的开始、中间的操作和最终的提交与回滚都只是涉及单个数据源。本地事务不具备分布式事务的处理能力,隔离的最小单位受限于资源管理器。

什么是分布式事务?

分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,保证不同数据的一致性。

        对于分布式系统而言,需要保证分布式系统中的数据一致性,保证数据在子系统中始终保持一致,避免业务出现问题,即使这些操作分布在不同的网络环境和物理位置中。在分布式事务中,通常需要跨多个独立的服务或数据库进行协调,以确保所有参与事务的子事务要么全部成功完成,要么在任何一部分失败时,所有部分的操作都能回滚到事务开始前的状态,必须是一个整体性的事务,从而保持数据的一致性。

        例如目前的微服务体系当中:创建一个关于购买商品的订单,会涉及到订单服务,库存服务,支付服务等不同的服务。这些服务都有自己各自的数据库,并管理自己的本地事务。所有的过程作为一个分布式全局事务,这些过程中的操作要么全部成功,要么全部失败。

        相比于数据库事务或本地事务中的ACID,分布式事务有CAP理论:

C:一致性(Consistency),代表数据在任何时刻、任何分布式节点中所看到的都是符合预期的。确保所有用户或节点在同一时间看到的是系统的最新一致状态,即任何数据更新后,所有相关节点都能立即看到这一更新。
A:可用性(Availability),代表系统不间断地提供服务的能力。要求系统在任何正常操作情况下都必须响应客户端请求,并且能够提供有意义的服务结果,即使在部分节点出现故障时也能找到并返回一个可用的数据副本给客户端
P:分区容错性(Partition Tolerance),代表分布式环境中部分节点因网络原因而彼此失联后,即与其他节点形成“网络分区”时,系统仍能正确地提供服务的能力。

        CAP定理指出,在设计和实现共享数据的分布式系统时,无法同时保证一致性(Consistency)可用性(Availability)分区容错性(Partition Tolerance)这三个属性。该定理强调在实际应用中,系统必须在这些关键特性之间做出权衡,最多只能同时确保任意两个。

        现实业务环境中的分布式系统往往需要结合ACID(原子性、一致性、隔离性和持久性)事务特性和CAP原则来满足特定业务需求,而非机械地追求某一种绝对的系统模型。设计的核心目标是灵活适应不同的应用场景,以达到满足业务需求与技术挑战之间的平衡。

        分布式事务实现起来比本地事务复杂得多,因为它们需要解决网络延迟、节点故障以及不同数据库系统的兼容性等问题。常见的分布式事务解决方案包括两阶段提交(2PC, Two-Phase Commit)、三阶段提交(3PC, Three-Phase Commit)、补偿事务(TCC, Try-Confirm-Cancel)、Saga模式以及基于消息队列的最终一致性方案等。

总结

        最简单来讲,本地事务能够高效较简单得用于单个资源的处理。分布式事务用于多个资源的处理,比本地事务要更加复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416152.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】Linux中的日志查询方法

文章目录 linux日志与日志的查询方法更多journalctl用法journalctl用法案例部分日志路径说明推荐阅读 linux日志与日志的查询方法 在Linux系统中,日志文件用于记录系统的各种运行信息和错误消息。常见的日志文件包括但不限于/var/log/下的各种日志,如me…

foxmail开启不能自动启动解决办法

1、不要以管理员权限启动,不勾选管理员权限。 2、在foxmail设置里勾选“开机自动启动”

微信小程序(二十)Vant组件库的配置

教程很详细,直接上过程 上一篇 官方文档也有,但是因为版本的更新,官方文档并没有跟着改变,这里我写一份最新版能用的教程 (口头禅还是不能少的🤣🤣🤣) 灵魂拷问&#xf…

增加/调整硬盘空间有效的 8 款管理磁盘分区软件分享

适用于电脑的最佳分区管理器是一个出色的工具,可以增加硬盘空间并确保最有效地管理磁盘分区。因此,请继续阅读以详细了解它们。 电脑上的存储问题并不是什么新鲜事。然而,随着最新 电脑的出现,情况有所改善。但似乎没有足够的空间…

数据监控-Prometheus/Grafana

一、数据监控Prometheus 1、什么是Prometheus Prometheus是由SoundCloud开源监控告警解决方案,从2012年开始编写代码,到2015年github上开源以来,吸引不少用户以及公司的使用。Prometheus作为新一代的开源解决方案,很多理念与Google SRE的运维之道不谋而合。 2、Promet…

如何使用数据恢复软件恢复已删除的文件

在计算机时代之前,数据一直以物理方式存储在纸张上。然后通过收集论文,创建了一个大数据库。收集到的论文存放在大房间或数据收集中心。笔和纸系统的一个很大的缺点是,如果你想找到特定的数据,就像在沙子里找到一根针一样。 计算…

2023 IoTDB Summit:Dr. Feinauer《Apache IoTDB在德国工业和关键基础设施中的应用》

12 月 3 日,2023 IoTDB 用户大会在北京成功举行,收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题,多位学术泰斗、企业代表、开发者,深度分享了工业物联网时序数据库 IoTDB 的技术创新…

幻兽帕鲁的搭建和幻兽帕鲁需要什么配置的服务器

前言 大家好,今天教大家如何快速搭建幻兽帕鲁,并能满足8-32人游玩 第一步 购买服务器 1.CPU:4核(最低需要4核起,当然可以选择更高的)CPU的选择更看重单核性能,尽量选择主频2.5GHz以上的&#…

goland课程管理(6)

项目目录结构如下图所示: core包下面: class.go package coreimport "github.com/gin-gonic/gin"func Class1(ctx *gin.Context) {}course.go package coreimport (. "cookie/database". "cookie/model""fmt"…

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么?

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么? 硬件互助,资源共享 分布式软总线 分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发…

TCP半链接和全链接队列实验(下)

TCP半链接和全链接队列实验(上)-CSDN博客 实战 - TCP 半连接队列溢出 如何查看 TCP 半连接队列长度? 很遗憾,TCP 半连接队列长度的长度,没有像全连接队列那样可以用 ss 命令查看。 但是我们可以抓住 TCP 半连接的特点,就是服务端…

Linux之进程间通信(system V 共享内存)

目录 一、共享内存 1、基本原理 2、共享内存的创建 3、共享内存的释放 4、共享内存的关联 5、共享内存的去关联 6、查看IPC资源 二、完整通信代码 三、共享内存的特点 四、信号量 1、相关概念 2、信号量概念 进程间通信的本质就是让不同的进程看到同一个资源。而前…

vit细粒度图像分类(四)BT-Net学习笔记

1.摘要 为了改进在细粒度图像分类过程中类别差异难以提取的问题,本文提出了一种基于 Transformer 双线性网络的细粒度网络分类优化方法(BT-Net)。 首先,将输入图像通过不同卷积处理成不同长度的二维向量,然后,构建重复次数不同的…

JVM内存问题排查

本文又名《对JVM一窍不通的我快速开始排查应用内存问题》。主要系统性地整理了排查思路,为大家遇到问题时提供全面的排查流程,不至于漏掉某些可能性误入歧途浪费时间。 基本原则 由于本文的定位是Cookbook,基本原则是让整个流程能够系统化规范化的同时将…

少儿编程:让孩子在数字世界中自由翱翔

在这个信息爆炸的时代,计算机和互联网已经成为我们生活中不可或缺的一部分。从智能手机到智能家居,从网络游戏到在线教育,数字技术已经渗透到我们生活的方方面面。因此,掌握编程技能,就像学习阅读和写作一样&#xff0…

RNN预测下一句文本简单示例

根据句子前半句的内容推理出后半部分的内容,这样的任务可以使用循环的方式来实现。 RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的强大神经网络模型。与传统的前馈神经网络不同,RNN能够通过其…

深度推荐模型之DeepFM

一、FM 背景:主要解决大规模稀疏数据下的特征组合遇到的问题:1. 二阶特征参数数据呈指数增长 怎么做的:对每个特征引入大小为k的隐向量,两两特征的权重值通过计算对应特征的隐向量内积 而特征之间计算点积的复杂度原本为 实际应…

橘子学ES实战操作01之集群模式如何实现快照备份

我们知道ES中通过副本在一定意义上实现了数据的备份和高可用。但是我们说万一副本数据丢失了,不小心被rm -f了,你就说逆天不逆天吧,此时要实现数据真正意义上的备份就要使用到快照机制,来把数据持久化备份起来,万一数据…

CAD-autolisp(三)——文件、对话框

目录 一、文件操作1.1 写文件1.2 读文件 二、对话框DCL2.1 初识对话框2.2 常用对话框界面2.2.1 复选框、列表框2.2.2 下拉框2.2.3 文字输入框、单选点框 2.3 Lisp对dcl的驱动2.4 对话框按钮实现拾取2.5 对话框加载图片2.5.1 幻灯片图片制作2.5.1 代码部分 一、文件操作 1.1 写…

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的 “ 连接” ,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以…