3阶段提交协议(3pc)
3阶段提交协议(3pc)
1 简介
三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二,形成了由CanCommit、PreCommit、DoCommit三个阶段组成的事务处理协议。
- 一、阶段一:CanCommit(事务询问)
协调者向所有的参与者发送一个包含事务内容的CanCommit请求,询问是否可以执行事务提交操作。
参与者根据自身的状态判断是否可以执行事务提交,并返回响应给协调者。
- 二、阶段二:PreCommit(准备提交)
协调者在接收到所有参与者的CanCommit响应后,进行决策。如果所有参与者都返回可以提交,则进入PreCommit阶段。
协调者向所有参与者发送PreCommit请求,通知参与者准备提交事务。
参与者收到PreCommit请求后,会执行事务操作,但此时事务并未真正提交。参与者会记录当前事务的日志,以便在后续阶段进行恢复。
- 三、阶段三:DoCommit(执行提交)
在PreCommit阶段结束后,协调者再次向所有参与者发送DoCommit请求,通知参与者真正提交事务。
参与者收到DoCommit请求后,会正式提交事务,并释放相关资源。
2 相比2pc的提升
三阶段提交相较于二阶段提交,它增加了两点修改:一是增加了CanCommit阶段,把整个协商过程扩展到三个阶段来协商;二是增加了超时机制。两个修改分别解决了问题呢?第一个减少了事务资源的锁定范围,这是CanCommit阶段来实现的,CanCommit阶段它可以排除掉一些因为网络原因还有因为一些自身的问题,不能参与不能完成本次全局事务的参与者,把它排除掉之后才会锁走事务资源的范围。另一个它解决的问题是降低了同步阻塞,参与者在等待协调者指令超时之后,他会执行默认的操作。比方说第二阶段参与者在等待协调者的指令超时之后他会默认执行中断本次事务的操作,也就是说中断本地的分支事务。第三阶段参与者未能在超时时间内接受到协调者的指令,那么他会默认执行Commit操作。因为进入到第三阶段的话本次全局事务提交的可能性已经非常大了,因为我们经过第一阶段网络原因的排除以及参与者自身问题的排除,经过第二阶段参与者也确实可以执行本次分支事务。
3 3pc问题
1.增加了一轮消息,增加了复杂度和协商效率。一般在生产环境中很少用3pc,一般都是使用2pc,像seta分布式框架,以及数据库XA协议都是基于2pc算法。
2.数据不一致(超时机制导致)。如果在DoCommit阶段,协调者或参与者出现故障,导致无法完成事务提交,参与者会在等待超时后,根据之前的PreCommit阶段记录的事务日志进行恢复操作。
相关文章:
3阶段提交协议(3pc)
3阶段提交协议(3pc) 1 简介 三阶段提交协议是一个强一致、中心化的原子提交协议。解决了分布式事务、副本容错等分布式问题。其核心思想是将2PC的二阶段提交协议的“准备阶段”一分为二,形成了由CanCommit、PreCommit、DoCommit三个阶段组成…...
802.11中的各种帧
在无线网络中,802.11协议定义了三种类型的帧:管理帧(Management Frames)、控制帧(Control Frames)和数据帧(Data Frames)。每种类型的帧都有其特定的功能,帮助维护和管理…...
SAP PP学习笔记21 - 计划策略的Customize:策略组 > 策略 > 需求类型 > 需求类(消费区分,计划区分)
上面几章讲了MTS,MTO,ATO的计划策略。 本章来讲一下它的后台 Customize。 1,Customizeing:Planned Indep.Reqmts Management 这是配置计划策略的整个过程: - Requirements Type / Class 需求类型 / 需求类 - Plann…...
axure9设置组件自适应浏览器大小
问题:预览时不展示下方的滚动条 方法一:转化为动态面板 1.在页面上创建一个矩形 2.右键-转化为动态面板 3.双击进入动态面板设置 4.设置动态面板矩形的颜色 5.删除原来的矩形 6.关闭动态面板,点击预览 7.此时可以发现底部没有滚动条了 方法…...
示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选
一、目的:在绑定TreeView的功能中经常会遇到需要在树节点前增加勾选CheckBox框,勾选本节点的同时也要同步显示父节点和子节点状态 二、实现 三、环境 VS2022 四、示例 定义如下节点类 public partial class TreeNodeBase<T> : SelectBindable<…...
C++ explicit关键字的用法
在C中,explicit关键字用于构造函数和转换运算符,以防止隐式转换。它可以帮助我们避免意外的类型转换,从而提高代码的安全性和可读性。explicit关键字只能用于单参数构造函数和转换运算符。 使用explicit的场景 单参数构造函数: 当…...
51.Python-web框架-Django开始第一个应用的增删改查
目录 1.概述 2.创建应用 创建app01 在settings.py里引用app01 3.定义模型 在app01\models.py里创建模型 数据库迁移 4.创建视图 引用头 部门列表视图 部门添加视图 部门编辑视图 部门删除视图 5.创建Template 在app01下创建目录templates 部门列表模板depart.ht…...
Redis之线程IO模型
引言 Redis是个单线程程序!这点必须铭记。除了Redis之外,Node.js也是单线程,Nginx也是单线程,但是他们都是服务器高性能的典范。 Redis单线程为什么能够这么快! 因为他所有的数据都在内存中,所有的运算都…...
针对微电网中可时移,柔性,基础负荷的电价响应模型---代码解析
前言: 在上两篇帖子中,讲解了我对于粒子群算法的理解,站在巨人的肩膀上去回望:科研前辈们确实非常牛逼,所以它才成为了非常经典的算法。这篇帖子主要是想分享一下,对于微电网、电力系统的论文中,…...
git使用http协议时免密pull和push方法
1、创建文件 在项目目录下创建.git-credentials文件,内容如下,填入自己的用户名和密码即可,如果是gitlab,把地址换成自己的gitlab的地址即可。 https://{用户名}:{密码}github.com2、终端执行 git config --global credential.…...
编译期间生成代码(Lombok原理)
通过在编译期间,修改Java的AST(Abstract Syntax Tree)树,可以往类中,添加/修改(覆盖)方法、属性等。 现在比较常见的三方依赖例子有:Lobbok的Data可以生成get、set方法,Sl4j2可以生成静态常量l…...
第2讲:pixi.js 绘制HelloWorld
基于第0讲和第1讲,我们增添了vite.config.ts文件。并配置了其他的http端口。 此时,我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容: import {Application, Text} from pixi.js import ./style.css// 指明…...
golang HTTP2 https测试POST变GET问题小记
概述 因为工作需要协助修改某个golang程序,添加双向认证。但是在调整的过程遇到一个HTTP POST请求变成GET诡异的问题,最后各种搜索,总算解决,博文记录,用于备忘。 代码 服务端 因工作内容,代码有删减&a…...
Linux下的lvm镜像与快照
lvm镜像(mirror) (1)划分三个PV,其中2个PV大小要一模一样 Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units cylinders of 16065 * 512 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/…...
嵌入式linux系统中SPI子系统原理分析01
大家好,今天给大家分享一下,如何使用linux系统中的SPI通信协议,实现主从设备之间的信息传递。 SPI是一种常见的设备通用通信协议。它是一个独特优势就是可以无中断发送数据,可以连续发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有限定位数。 …...
Part 4.2 背包动态规划
->背包模型模板(0/1,分组,完全,多重)<- [NOIP2018 提高组] 货币系统 题目背景 NOIP2018 提高组 D1T2 题目描述 在网友的国度中共有 n n n 种不同面额的货币,第 i i i 种货币的面额为 a [ i ] a[i] a[i],你可以假设每…...
Elasticsearch-使用Logstash同步Mysql
1.安装logstash es服务器版本必须和logstash版本一致 7.9.2 在/usr/local/src/下新建logstash文件夹,解压 下载logstash后查看是否安装成功,在logstash的bin目录下输入指令: ./logstash -e input { stdin { } } output { stdout {} }2.my…...
6.17作业
升级优化自己应用程序的登录界面。 要求: 1. qss实现 2. 需要有图层的叠加 (QFrame) 3. 设置纯净窗口后,有关闭等窗口功能。 4. 如果账号密码正确,则实现登录界面关闭,另一个应用界面显示。 //发送端头文件…...
算法思想个人总结(结合生活理解)
主要思想: 结合生活和游戏理解思想,先知道什么场景用什么算法,然后再理解就能记住 遇到问题可以考虑选择使用,这样才是学活了 https://www.yuque.com/yuqueyonghu5znoyv/ifb5ga/nfcvg3ft9ryuqeem?singleDoc# 《元启发式算法》...
openh264 帧间预测编码过程源码分析
openh264 OpenH264 是一个开源的 H.264 编码和解码器,由思科系统开发并维护。它专为实时应用程序如 WebRTC 设计,提供了从基础到高级特性的广泛支持。OpenH264 的编码器支持从 Constrained Baseline Profile 到 5.2 级别,允许任意分辨率的编…...
Linux网络 - HTTP协议
文章目录 前言一、HTTP协议1.urlurl特殊字符 requestrespond 总结 前言 上一章内容我们讲了在应用层制定了我们自己自定义的协议、序列化和反序列化。 协议的制定相对来讲还是比较麻烦的,不过既然应用层的协议制定是必要的,那么肯定已经有许多计算机大佬…...
面试题——Nginx
1.Nginx是什么? 是一个高性能的Web服务器和反向代理服务器,也可以作为静态文件的缓存服务器,也能够进行负载均衡。 2.Nginx的作用? 1.反向代理:将多台服务器代理为一台服务器。客户端不了解底层服务端。 2.负载均衡…...
持续学习的综述: 理论、方法与应用
摘要 为了应对现实世界的动态,智能系统需要在其整个生命周期中增量地获取、更新、积累和利用知识。这种能力被称为持续学习,为人工智能系统自适应发展提供了基础。从一般意义上讲,持续学习明显受到灾难性遗忘的限制,在这种情况下…...
跨域资源共享(CORS)问题与解决方案
跨域资源共享(CORS,Cross-Origin Resource Sharing)是现代web开发中常见且重要的一个概念。它涉及到浏览器的同源策略(Same-Origin Policy),该策略用于防止恶意网站从不同来源窃取数据。然而,在…...
实用软件分享-----一款免费的人工智能替换face的神器
专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…...
不可思议!这款 Python 库竟然能自动生成GUI界面:MagicGUI
目录 什么是MagicGUI? 编辑 MagicGUI的工作原理 安装MagicGUI 创建你的第一个GUI 编辑 其他案例 输入值对话框 大家好,今天我们来聊一聊一个非常有趣且实用的Python库——MagicGUI。这个库可以让你用最少的代码,快速创建图形用户…...
论文发表CN期刊《高考》是什么级别的刊物?
论文发表CN期刊《高考》是什么级别的刊物? 《高考》是由吉林省长春出版社主管并主办的省级教育类期刊,期刊以科教兴国战略为服务宗旨,专门反映和探索国内外教育教学和科研实践的最新成果。该期刊致力于为广大教育工作者提供一个高质量的学术…...
离散数学复习
1.关系的介绍和性质 (1)序偶和笛卡尔积 两个元素按照一定的顺序组成的二元组就是序偶,使用尖括号进行表示,尖括号里面的元素一般都是有顺序的; 笛卡尔积就是有两个集合,从第一个集合里面选择一个元素&am…...
华为网络设备高频命令
1.system-view • 用法:在用户视图下执行 system-view 命令。 • 作用:进入系统视图,以便进行配置性的操作。 • 场景:当需要对设备进行系统级的配置时。 2.sysname XXX • 用法:执行 [Huawei]sysname XXX 命令。…...
信友队:南风的收集
C. [202406C]楠枫的收集 文件操作 时间限制: 1000ms 空间限制: 262144KB 输入文件名: 202406C.in 输出文件名: 202406C.out Accepted 100 分 题目描述 一年四季,寒暑交替,楠枫总是会收集每一个季节的树叶,并把它们制作成标本收集起来。当…...
java 框架用来做网站/移动广告联盟
开发板:荔枝派zero linux:5.10 rootfs:buildroot 2017.8.1 使用最新的主线linux内核5.10,主线5.10内核linux make ARCHarm licheepi_zero_defconfig 默认打开了8723BS编译为模块且只能编译成模块 因为要加载固件到8723内部 编译后…...
wordpress统计分析/东莞网络优化公司
作者 | 张俊鸣素有“大笨象”之称的银行股轻盈起舞,上证指数五天内连攻3000点到3400点之间的五个百点整数关口,“牛市来了”已经成为众多投资者的共识。伴随着汹涌入市的资金潮,日成交破万亿再度成为“新常态”,部分券商的APP一度…...
四川建设网站/资源搜索器
ADO特有的流化和还原 {*******************************************************}{ }{ ADO 数据流化 }{ }{ 版权所有 (C) 2013 YangYxd }{ }{*******************************************************} { ado数据集流化Rs: TADOQuery;M: TMemoryStream;Rs.SQL.Text : Select…...
网站建设公司 电话销售没什么效果/seo关键词工具
如果现在想要通过程序实现内容的输出,核心的本质一定要依靠OutputStream完成,但是OutputStream类的数据输出功能有限,所有的数据一定要转为字节数组后才可以输出,假设说项目里面输出的是long或者doubl或者Date,在这样的…...
大连市人民政府/seozhun
SpringBoot目前的使用已经很普遍了,实际的项目中,我们需要集成各种的插件支持,不仅如此,还有很多可能我们平时不知道,但是很方便的操作。pdf里面的东西还是比较全面的。 1、关于文档 2、获得帮助 3、第一 步 4、使…...
如何做生鲜配送网站生意/湖北短视频搜索seo
想象一下,如果您企业的人力资源部门不仅可以使用数据来预测员工的敬业度,还能够知道员工什么时候可能会跳槽?而这就是HighGround公司的 创始人兼首席执行官Vip Sandhir想要通过该公司最新员工敬业度产品所实现的目标。通过创建能够直接从员工中挖掘数据…...