两阶段提交(2PC, Two-Phase Commit)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【8月更文挑战第24天】

两阶段提交(2PC, Two-Phase Commit)是一种确保分布式系统中事务原子性的协议。它分为两个关键阶段:

  1. 准备阶段(第一阶段)

    • 发起请求:事务的发起者(通常是GTS客户端通过事务协调器)向所有参与该事务的节点(参与者)发送请求,询问它们是否准备好提交事务。
    • 响应准备:每个参与者接收到请求后,会执行本地事务操作到一个可提交的状态,但不实际提交。之后,参与者回复事务发起者,确认自己已经准备好,或者报告无法执行事务的原因。
  2. 提交阶段(第二阶段)

    • 决策提交:如果在第一阶段中,所有参与者都回复准备就绪,事务发起者将向所有参与者发送提交指令。
    • 执行提交或回滚:收到提交指令的参与者会正式提交本地事务,完成数据更改;若有任何参与者在第一阶段反馈了无法执行,则发起者会向所有参与者发送回滚指令,要求它们撤销之前的操作,确保事务的原子性。

事务在执行过程中可能会处于多种状态,包括初始化、准备中、提交中、回滚中、已提交、已回滚以及一些异常状态(如提交异常、回滚异常、回查异常),这些状态反映了事务从开始到结束的完整生命周期[1]

此外,XID作为GTS分布式事务的全局事务ID,在整个2PC过程中扮演着追踪和问题排查的关键角色,它为每个分布式事务提供了唯一的标识[2]

性能监控方面,针对两阶段提交(2PC)的事务,系统可以统计执行时间超过特定阈值(如1秒、3秒、5秒)的事务数量,帮助识别和优化潜在的性能瓶颈[3]

通过这样的机制,2PC确保了分布式环境下的事务能够保持一致性和可靠性,即使在面对网络分区或节点故障等复杂情况时也能保证数据的一致性。

相关链接
事务执行状态说明 https://help.aliyun.com/document_detail/132929.html
名词解释 https://help.aliyun.com/document_detail/48730.html
性能参数表 RDS PostgreSQL https://help.aliyun.com/zh/rds/apsaradb-rds-for-sql-server/performance-parameters
性能参数表 RDS PostgreSQL https://help.aliyun.com/zh/rds/developer-reference/performance-parameters
性能参数表 RDS PostgreSQL https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/performance-parameters

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
2月前
分布式事务的两阶段提交和三阶段提交分别有什么优缺点?
【9月更文挑战第9天】两阶段提交(2PC)和三阶段提交(3PC)是解决分布式系统事务一致性的机制。2PC实现简单,保证强一致性,但存在同步阻塞、单点故障和数据不一致风险。3PC通过引入超时机制减少阻塞时间,降低单点故障影响,但复杂性增加,仍可能数据不一致,并有额外性能开销。
|
3月前
|
算法
两阶段提交
【8月更文挑战第11天】
36 1
|
4月前
|
中间件 数据库
|
4月前
|
中间件
|
3月前
|
设计模式 运维 测试技术
提交阶段
提交阶段
31 0
|
存储 算法 关系型数据库
对比两阶段提交,三阶段提交做了哪些改进?
在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。在关系型数据库中,由于存在事务机制,可以保证每个独立节点上的数据操作满足 ACID。但是,相互独立的节点之间无法准确的知道其他节点中的事务执行情况,所以在分布式的场景下,如果不添加额外的机制,多个节点之间理论上无法达到一致的状态。 在分布式事务中,两阶段和三阶段提交是经典的一致性算法,那么两阶段和三阶段提交的具体流程是怎样的,三阶段提交又是如何改进的呢?
105 0
|
6月前
|
存储 消息中间件 关系型数据库
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
131 0
|
存储 算法 NoSQL
分布式事务两阶段提交和三阶段提交有什么区别?
分布式事务两阶段提交和三阶段提交有什么区别?
245 0
分布式事务两阶段提交和三阶段提交有什么区别?
【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
111 0