两阶段提交协议(2PC)

本文介绍了两阶段协议的基本概念,包括其在分布式系统中确保数据一致性的关键作用。文章详细解释了该协议的两个主要阶段——投票阶段和决定阶段,并通过一个生活中的例子帮助读者更好地理解这一复杂的计算机科学概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于两阶段协议,只要学过《数据库基本原理》这本书的应该对这个名词比较熟悉,当时在本科的时候,学过这个协议,结果在后面却完全忘了这个协议,直到在后面《大数据存储》里面有一道关于两阶段协议的题后才引起了我对这个协议的了解。


两阶段协议分两个阶段,投票阶段和决定阶段:

(1)投票阶段

1. 协调者发送一个VOTE-REQ消息给所有的参与者
2. 当参与者接收到VOTE-REQ消息后,它会发送一个包含参与者投票结果的消息(YES或NO)给协调者作为响应。如果参与者投的是No,它会决定Abort事务并停止运行

(2)决定阶段

1. 协调者收集来自所有参与者的投票信息。如果所有的消息都是YES,同时协调者投的也是Yes,那么协调者就会决定进行Commit,并向所有参与者发送COMMIT消息。否则协调者就会决定进行Abort,并向所有投Yes的参与者发送ABORT消息(那些投No的参与者已经在第一阶段第2步中决定Abort了)。之后,对于这两种情况协调者都会停止运行
2. 每个投Yes的参与者等待来自协调者的COMMIT或ABORT消息。收到消息后执行相应动作然后停止运行。

这个协议看起来好像有点不近人情,只要有一人没有做出肯定的回复,整个动作就要被取消。

举个例子说明吧,上面的好像有点抽象:

假设一个寝室有四人:A、B、C、D,有一天室长A说明天大家一起去看电影吧。

B回复:好吧

C回复:行

但是此时D不在寝室,室长就发个短信给D,但是D一直没有看手机,直到会寝室才直到这件事,此时他却说,不好意思,我们明天有约。

室长,说那我们明天就不去吧,就这样看电影活动就被取消。


这就是两阶段协议,在分布式系统中的应用就是,只有全部的结果能通过才通过,这样的话就会保证数据的一致性。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值