二段提交协议、三段提交协议

2024-04-25 12:38
文章标签 协议 提交 三段 二段

本文主要是介绍二段提交协议、三段提交协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、二段提交协议

2pc
提交事务阶段------投票阶段
协调者发起事务请求到所有的参与者,参与者接收到事务请求后判断自身情况,如果不能执行事务,则反馈不能提交事务,返回NO,如果可以就执行事务,并将undo和redo信息记录事务日志中,反馈Yes

执行事务阶段
协调者收到所有参与者反馈Yes就发布commit命令,否则如果超时未收到或者收到NO 那么发布回滚命令。

参与者收到commit的请求后正式提交事务操作,提交后释放资源。完成事务后向协调者发送ack消息  协调者收到所有参与者的ack后完成事务。

参与者收到rollback的请求查找undo记录,完成回滚后释放资源。完成事务后向协调者发送ack消息  协调者收到所有参与者的ack后中断事务。

优点:原理简单,实现方便

缺点:同步阻塞,单点问题,脑裂问题,太过保守--超时机制,数据不一致---第二阶段部分事务提交。

2、三阶段提交协议

3pc

第一阶段

cancommit

1、协调者向所有参与者发布包含事务内容的canCommit命令,等待参与者回应。

2、参与者认为自身能执行,则返回yes。否则返回NO

第二阶段

preCommit阶段

1、如果协调者收到的反馈都是yes,那么发出preCommit命令,进入prepared阶段,参与者收到preCommit命令后,执行事务操作。并写入undo和redo信息到事务日志中。然后想协调者反馈ack相应

2、如果协调者收到的返回时NO,那么发布abort命令。各参与者收到abort或者超时,都中断事务。

第三阶段,

docommit阶段

如果协调者收到所有参与者的ack相应,那么会发出doCommit命令,所有参与者收到docommit命令就提交事务,然后释放资源。向协调者发出ack。协调者收到所有参与者的ack详细后完成事务。

如果协调者收到No反馈或者超时响应后,将对所有的参与者发出abort请求。各个参与者收到abort请求后会利用undo信息回滚事务。,然后释放资源,反馈ack。协调者收到所有ack消息后,中断事务。

需要注意的是,在第三阶段如果参与者没有收到docommit命令,那么超时后它会提交事务,毕竟第一阶段所有的参与者都响应了,默认他们都能正常工作。

优缺点:

优点:即第三阶段的超时提交。降低了参与者的阻塞范围,并且能够再出现单点故障后继续达成一致。

缺点:数据可能也会不一致。也存在2pc中的缺点


这篇关于二段提交协议、三段提交协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934710

相关文章

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、JT/T905协议介绍 (一)概述 (二)主要内容 1、设备要求 2、业务功能要求 3、技术功能要求 4、性能要求 5、接口要求 6、设备通信协议与数据格式 三、代码和解释 (一)代码和注释 (二)函数功能说明 1. 头文件保护 2. 包含必要的头文件 3. 引入命名空间std

计算机网络协议常考点!!!

应用层协议 HTTP协议 基于TCP协议,是一种用于传输超文本和多媒体内容的协议,主要是为浏览器之前的通信而设计的; get请求和post请求区别 请求参数位置不同:get会将请求参数放在URL后面并通过&运算符连接,而post提交会将请求参数放在请求体里; 请求数据量不同:get的请求参数会受到浏览器对URL最大长度的限制,而post是将请求参数放在请求体中,可以请求大量数据; 安全

网络编程篇:HTTP协议

一.预备知识 在客户端访问服务端时,要用ip+port,但是在日常用户访问服务端的时候,并不会直接使用ip,而是使用域名,比如:百度(www.baidu,com)。                                                                                    在浏览器处理时,会将域名解析为对应的ip+port。

git提交方式

2、代码提交方式   <a>github的提交方式      (1)git add .--------------------存储到本地          git commit -m 'message'-------存储时的标记(修改了哪些地方,方便下次查询)          git pull------------------------下载服务器代码          git push--

rtp与rtcp协议详解

目录: 1 RTP概述 1.1 是什么RTP1.2 RTP的应用环境 2 RTP详解 2.1 RTP的协议层次 2.1.1 传输层的子层2.1.2 应用层的一部分 2.2 RTP的封装2.3 RTCP的封装2.4 RTP的会话过程 3 相关的协议 3.1 实时流协议RTSP3.2 资源预定协议RSVP 4 常见的疑问5 实现方案6 参考资料 1 RTP概述 1.1 是什么RTP

RTSP协议,这个写的不错,赚了

1. RTSP连接的建立过程       RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话。       首先创建RTSP服务器(具体实现类是DynamicRTSPServer),在创建过程中,先建立Socket(ourSocket)在TCP的554端口进行监听,然后把连接处理函数句柄(RTSPSer

RTP:实时传输协议详解(转)

实时传输协议RTP 1.RTP协议: RTP( Real-time Transport Protocol)协议最初是在70年代为了尝试传输声音文件,把包分成几部分用来传输语音,时间标志和队列号。经过一系列发展,RTP第一版本在1991年8月由美国的一个实验室发布了。到本世纪1996年形成了标准的的版本。很多著名的公司如Netscape ,就宣称“Netscape LiveMedia”是基于RTP协

基于http协议的接口测试(2)

一).接口约定: 1、接口均采用http协议,Get方法。 2、城市公交请求参数为app_key、city、start_addr、end_addr,app_key为需要你申请密钥key http://openapi.aibang.com/bus/transfer?app_key=????&city=????&start_addr=????&end_addr=???? 如果不清楚请求