IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 分布式事务协议(2PC两阶段提交) -> 正文阅读

[大数据]分布式事务协议(2PC两阶段提交)

2PC两阶段提交协议

顾名思义:分为两个阶段:Prepare和Commit

Prepare:提交事务请求

在这里插入图片描述

  1. 询问 协调者向所有参与者发送事务请求,询问是否可执行事务操作,然后等待各个参与者的响应。
  2. 执行 各个参与者接收到协调者事务请求后,执行事务操作(例如更新一个关系型数据库表中的记录),并将
    Undo 和 Redo 信息记录事务日志中。
  3. 响应 如果参与者成功执行了事务并写入 Undo 和 Redo 信息,则向协调者返回 YES 响应,否则返回 NO
    响应。当然,参与者也可能宕机,从而不会返回响应

Commit:执行事务提交

在这里插入图片描述

  1. commit 请求 协调者向所有参与者发送 Commit 请求。
    图灵课堂
  2. 事务提交 参与者收到 Commit 请求后,执行事务提交,提交完成后释放事务执行期占用的所有资源。
  3. 反馈结果 参与者执行事务提交后向协调者发送 Ack 响应。
  4. 完成事务 接收到所有参与者的 Ack 响应后,完成事务提交。

中断事务

在这里插入图片描述
在执行 Prepare 步骤过程中,如果某些参与者执行事务失败、宕机或与协调者之间的网络中断,那么协调者就无法
收到所有参与者的 YES 响应,或者某个参与者返回了 No 响应,此时,协调者就会进入回退流程,对事务进行回
退。流程如下图红色部分(将 Commit 请求替换为红色的 Rollback 请求):

在这里插入图片描述

2PC存在的问题

1.?同步阻塞?参与者在等待协调者的指令时,其实是在等待其他参与者的响应,在此过程中,参与者是无法进
行其他操作的,也就是阻塞了其运行。?倘若参与者与协调者之间网络异常导致参与者一直收不到协调者信
息,那么会导致参与者一直阻塞下去。
2.?单点?在?2PC?中,一切请求都来自协调者,所以协调者的地位是至关重要的,如果协调者宕机,那么就会
使参与者一直阻塞并一直占用事务资源。
如果协调者也是分布式,使用选主方式提供服务,那么在一个协调者挂掉后,可以选取另一个协调者继续后续的服
务,可以解决单点问题。但是,新协调者无法知道上一个事务的全部状态信息(例如已等待?Prepare?响应的时长
等),所以也无法顺利处理上一个事务。
3.?数据不一致?Commit?事务过程中?Commit?请求/Rollback?请求可能因为协调者宕机或协调者与参与者网
络问题丢失,那么就导致了部分参与者没有收到?Commit/Rollback?请求,而其他参与者则正常收到执行了?
Commit/Rollback?操作,没有收到请求的参与者则继续阻塞。这时,参与者之间的数据就不再一致了。
当参与者执行?Commit/Rollback?后会向协调者发送?Ack,然而协调者不论是否收到所有的参与者的?Ack,该事务
也不会再有其他补救措施了,协调者能做的也就是等待超时后像事务发起者返回一个“我不确定该事务是否成
图灵课堂
功”。
4.?环境可靠性依赖?协调者?Prepare?请求发出后,等待响应,然而如果有参与者宕机或与协调者之间的网络
中断,都会导致协调者无法收到所有参与者的响应,那么在?2PC?中,协调者会等待一定时间,然后超时后,
会触发事务中断,在这个过程中,协调者和所有其他参与者都是出于阻塞的。这种机制对网络问题常见的现
实环境来说太苛刻了。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:36:19  更:2022-03-12 17:39:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:42:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码