分布式系统的事务处理:2PC与3PC的演化与挑战

news2024/11/17 17:53:16

在传统的单体应用中,事务管理相对较为简单,可以通过数据库事务来实现数据的一致性。然而,随着系统的拆分和分布式架构的应用,跨多个服务的事务操作变得更为复杂。这就引出了分布式事务的概念,它是保证分布式系统数据一致性的关键。

1、基于XA协议

在分布式系统中,多个事务同时进行并涉及多个数据库或资源管理器(RM)时,需要确保数据的一致性。XA协议是一种常见的分布式事务管理协议,它提供了一种可靠的机制来协调并保证分布式事务的正确执行。XA协议提供了两种主要的提交策略:两阶段提交和三阶段提交。本文将深入探讨这两种策略的原理和特点,以及它们在实际应用中的使用。

2、两阶段提交协议(2PC)

两阶段提交协议用于保证分布式事务的原子性,即所有的参与节点或者全部都执行或者全部不执行,其执行过程主要分为两个阶段:

第一阶段,准备阶段;第二阶段,提交阶段

1)准备阶段

协调者为每个参与者都发送prepare消息,每个参与者进行表决,返回同意或取消。预执行本地事务,资源阻塞,但不提交事务。

2)提交阶段

协调者基于每个参与者准备阶段的表决,当且仅当所有参与者同意提交,协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务。

3、三阶段提交协议(3PC)

三阶段提交协议在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段拆分成了两步:询问,然后再锁资源,最后真正提交。

三个阶段的执行

  1. CanCommit阶段
    协调者向参与者发送CanCommit请求,参与者如果可以提交,就返回Yes响应,否则返回No响应。
  2. PreCommit阶段
    协调者根据参与者的反应情况来决定是否可以继续事务的PreCommit操作。
  3. DoCommit阶段

协调者基于每个参与者PreCommit阶段的反馈结果,决定真正提交事务,还是中断事务。

3、2PC与3PC对比

2PC3PC
超时协调者可设置超时协调者、参与者均可设置超时
阻塞进入询问后阻塞所有节点第一阶段缓冲,通过后第二阶段才阻塞
一致性节点异常会发生不一致性节点异常会发生不一致性

在分布式系统中,2PC(两阶段提交)和3PC(三阶段提交)是两种常见的事务协议,用于确保分布式事务的一致性。下面是它们之间的对比:

  1. 阶段数不同:2PC只有两个阶段,即准备阶段和提交阶段;而3PC有三个阶段,即准备阶段、预提交阶段和正式提交阶段。
  2. 超时机制不同:2PC没有超时机制,一旦进入等待状态,参与者将一直等待直到收到响应;而3PC引入了超时机制,如果在规定的时间内没有收到大多数参与者的响应,则会回滚事务。
  3. 2PC和3PC都有可能发生阻塞情况,但是3PC相对于2PC来说更容易避免阻塞情况的发生。
  4. 2PC 和 3PC 都无法完美解决分布式数据一致性问题,虽然无法保证事务ACID特性,但解决问题的思想在很多实际架构中有着广泛应用。
  5. 可用性不同:由于3PC引入了预提交和正式提交两个阶段,因此在网络分区等异常情况下,可以更好地处理节点故障等问题,提高了系统的可用性和可靠性。
  6. 实现复杂度不同:由于3PC需要更多的资源和时间来实现,因此相对于2PC来说,实现起来更加复杂。

==============================

如果文章对你有帮助,请不要忘记加个关注、点个赞!

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

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

相关文章

io.netty学习(十二)Netty 工作原理

目录 前言 Netty 模型 代码示例 引入Maven依赖 服务端的管道处理器 服务端主程序 客户端管道处理器 客户端主程序 测试运行 总结 前言 上一篇文章我们对 Reactor 模型进行了详细的讲解,下面我们就来探究一下 Netty 模型,Netty 采用的就是 主从…

一章:UltraiSO制作启动u盘+制作winPE镜像+硬盘安装系统

简单明了,希望对于伙伴们有帮助!!! 目录 一、使用ultraiso制作启动u盘 二、老毛桃制作winPE镜像 三、硬盘安装系统 等待完成即可 一、使用ultraiso制作启动u盘 第一步 双击打开ultraiso,点击文件->打开->选…

Navicat for Redis 功能介绍

Navicat Premium 版本 16.2在原本已很优秀的产品上新增了多个令人兴奋的新功能,其中最值得注意的是对 Redis 的支持。现在,Navicat 有一个特别针对 Redis 管理和开发的客户端——Navicat for Redis。它为用户提供了一个易于访问的界面,以可视…

花了3周理解的xgboost算法原理

文章目录 算法流程CART树最佳节点值最佳树结构 算法流程 先学决策树,再学随机森林,最后才来到xgboost。本以为如此平滑地过渡过来,会容易一些,没想到还是这么艰难。零零散散花了3周多的时间,看了好多文章的解释和阐述…

大数据从0到1的完美落地之Flume案例2

案例演示 实时采集(监听目录):Spool File HDFS Spool 是Source来源于目录,有文件进入目录就摄取,File Channel将它暂存到磁盘,最终目的地是HDFS 即只要某个目录不断有文件,HDFS上也会同步到所有数据。 配置方案 [ro…

机器学习:基于逻辑回归对航空公司乘客满意度的因素分析

机器学习:基于逻辑回归对航空公司乘客满意度的因素分析 作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点…

前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容

前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13183 效果图如下: # cc-shopDialog #### 使用方法 使用注意: 该插件需引用…

【软件基础】面向对象编程知识总结

文章目录 前言一、面向对象要解决的问题1、 软件重用性差2、软件可维护性差3、不能满足用户需求 二、面向对象的基本概念三、面向对象的特征四、面向对象的要素五、面向对象的开发方法六、面向对象的模型1、对象模型2、动态模型3、功能模型 总结1、鸭子抽象类2、鸭子类3、鸭子动…

【Tableau案例】神奇宝贝属性及实力强弱|数据可视化

提前声明:神奇宝贝的数据分析仅供参考,不涉及对于神奇宝贝的各种评价,另外我是初学tableau,涉及到使用的tableau操作可能很简单,复杂的还掌握不熟练,之后会拿时间系统学习tabelau。 数据预处理 该数据集有…

电容笔和触控笔哪个好用?推荐平价好用的电容笔

实际上,电容笔和触控笔这两款笔最大的区别,就在于它的应用范围,一个是适用电容型屏幕,一个是适用电阻型屏幕。如果你想要一个与IPAD相匹配的电容笔,苹果的Pencil将会是一个很好的选择。实际上,平替的电容笔…

Java-API简析_java.lang.Throwable类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131367906 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

成都爱尔林江院长解析看懂验光单,掌握配镜“秘密”

想要更了解自己的“数据”, 想知道自己近视有没有增长, 该如何知道自己的度数呢? 到医院进行验光, 验光后得到的验光单,自己有仔细看过吗? 一串字母与数字,知道都代表着什么吗?…

警惕度量指标陷阱

本文首发于个人网站「BY林子」,转载请参考版权声明。 近日,某群有人发了领导制定的绩效考核指标: 对测试人员的工作成效进行考核,指标是发现的 Bug 的情况,甚至有参考指标细到每个小时要求发现多少 Bug,同时…

VUE L ClassStyle ⑦

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs C l a s s Class Class与 S t y l e Style Style绑定总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持…

scratch绘制正方形 少儿编程 电子学会图形化编程scratch编程等级考试二级真题和答案解析2023年5月

目录 scratch绘制正方形 一、题目要求 1、准备工作 2、功能实现 二、案例分析</

动态规划之下降路径最小和

1. 题目分析 题目链接选自力扣 : 下降路径最小和 如果光看这个题目说明的话, 是有点抽象的. 我们结合实例 1 来看 : 总的来说就是, 起始点是第一行中的任意一点, 每个点只有三个方向可以走即向下, 左下, 右下. 当到达最后一行的任意一点即算作到达终点. 期间不同的路径上不同…

mysql单机安装

准备工作 检测项 检测命令 标配值 服务器内存 free -m 32G 硬盘 df -h 1T seLinux getenforce Disabled&#xff08;disabled指关闭&#xff0c;Enforcing指开启 文件描述符大小 ulimit -n 65535 其他优化 Other Other 清理环境 卸载服务器自带…

佩戴比较舒适的蓝牙耳机有哪些?长久佩戴舒适的蓝牙耳机推荐

​听歌、刷剧、游戏&#xff0c;运动、吃饭、睡觉等&#xff0c;要说现在年轻人除了离不开手机之外&#xff0c;还有就是蓝牙耳机了&#xff01;当然&#xff0c;随着蓝牙耳机的快速发展&#xff0c;各种各样的蓝牙耳机都有&#xff0c;导致很多人不知道耳机怎么选了&#xff0…

四大因素解析:常规阻抗控制为什么只能是10%?

随着高速信号传输&#xff0c;对高速PCB设计提出了更高的要求&#xff0c;阻抗控制是高速PCB设计常规设计&#xff0c;PCB加工十几道工序会存在加工误差&#xff0c;当前常规板厂阻抗控制都是在10%的误差。理论上&#xff0c;这个数值是越小越好&#xff0c;为什么是10%&#x…

Git进阶系列 | 7. Git中的Cherry-pick提交

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第7篇。原文&#xff1a;Cherry-Picking Commits in Git[1] 在本系列的第5部分中&#xff0c;讨论了r…