两阶段提交和三阶段提交

本文探讨了分布式系统中数据不一致性的挑战,介绍了两阶段提交(2PC)和三阶段提交(3PC)协议。2PC通过协调者确保数据一致性,但在请求和提交阶段存在阻塞及单点故障问题。3PC引入超时机制缓解阻塞,但可能在doCommit阶段导致不一致性。
摘要由CSDN通过智能技术生成

分布式提交的问题

在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。
在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突,造成事实上的数据不一致。

解决思路

可以看到,这里出现问题的主要原因是多个副本之间没有同步机制,可以增加一个协调机制来解决数据不一致问题。下面介绍的两阶段提交和三阶段提交都是通过引入一个协调者来进行协调。

两阶段提交

概述

1. 请求阶段

事务协调者通知每个参与者准备提交或取消事务,然后进入表决过程,参与者要么在本地执行事务,写本地的redo和undo日志,但不提交,到达一种"万事俱备,只欠东风"的状态。请求阶段,参与者将告知协调者自己的决策: 同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)。

2. 提交阶段

在该阶段,写调整将基于第一个阶段的投票结果进行决策: 提交或取消。
当且仅当所有的参与者同意提交事务,协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务。
参与者在接收到协调者发来的消息后将执行响应的操作。

解决了哪些问题

在正常的情况下,如果第一阶段某些参与者出现问题,那么其他所有参与者都能够知道事务失败了

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值