分布式协议 2PC

2PC(2Two-Phase Commit) 俩阶段提交。二阶段提交协议也被认为是一种一致性协议,用来保证分布式系统数据的一致性。目前绝大部分的关系型数据库都采用而极端提交来完成分布式事务处理的,利用该协议能够非常方便的完成所有分布式事务参与者的协调,统一决定事务提交还是回滚,从而能有效保证分布式数据一致性,因此二阶段协议被广泛地应用到许多分布式中。

协议说明

  1. 协议说明
    阶段一:提交事务请求

    1) .事务询问。
    协调者向所有的参与发送事务内容,询问是否可以执行事务提交操作,并开始等待个参与者的相应。
    2).执行事务
    各参与节点执行事务操作,并将Undo 和Redo 信息记入事务日志中。
    3).各参与者向协调者反馈事务轮询的响应。
    如果参与者成功执行了事务操作,那么就反馈给协调者YES响应,表示事务可以执行;如果参与者没有成功主席那个事务,那么就反馈给协调者NO响应,表示事务不可以执行。
    协调者组织各参与者对一次事务操作的投票表态过程,因此二阶段提交协议的阶段一也被称为“偷拍阶段”,即各参与者投票表明是否继续执行接下去的提交操作。

    阶段二:执行事务提交

    在阶段二中,协调者会根据所有参与者的反馈清苦那个来最终决定是否可以执行事务提交操作。正常情况下,包含以下俩种可能。

    执行事务提交
    如果协调者从所有的参与者获得的反馈都是Yes响应,那么就会执行事务提交
    1) .发送提交请求 >> 协调者向所有参与者节点发出Commit请求。
    2).事务提交 >> 参与者接收到Commit请求后,会正式执行事务提交操作,并完成提交之后释放整个事务执行期间占用的事务资源。
    3). 反馈事务提交结果 >> 参与者完成事务提交之后,向协调者发送ack消息。
    4). 完成事务 >> 协调者在接收到所有参与者反馈的Ack消息后,完成事务。
    中断事务
    假如任何一个参与者向协调者反馈了No的响应,或者在等待超时之后,协调者尚无法接收到所有参与者的反馈响应,那么就会中断事务。
    1). 发送回滚请求 >> 协调者向所有参与者发出Rollback请求。
    2). 事务回滚 >> 参与者接收到Rollback请求之,会利用其在阶段一中记录的Undo信息来执行事务回滚操作,并在完成回滚之后释放整个事务执行期间占用的资源。
    3). 反馈事务回滚结果 >> 参与者在完成事务回滚之后,向协调者发送Ack消息。
    4). 中断事务 >> 协调者接收到所有参与者但亏的Ack消息之后吗,完成事务中断。

  2. 优缺点
    优点: 原理简单,实现方便
    缺点:同步阻塞、单点问题、脑裂、太过保守

    1).同步阻塞
    二阶段提交协议存在最明细那也是最大的一个问题就是同不阻塞,极大的限制了分布式系统的性能,在二阶段提交执行的过程中,所有参与该事务操作的逻辑处理都处于阻塞状态,也就是说,哥哥参与者在等待其他参与者相应过程中,将无法进行其他操作。
    2).单点问题
    协调者在整个二阶段提交协议额中起到了非常重要的作用。一旦协调者出现问题的话,那么其他参与者将无法运转,更为糟糕的是,如果协调者是在二阶段中出现问题的话,其他参与者会一直处于锁定书屋资源的状态中,而无法完成其他事务操作。
    3).数据一致性
    在二阶段提交协议的阶段二,即执行事务提交的时候,当协调者向所有参与者发送commit请求之后,发生了居于网络异常或者是协调者在尚未发送完Commit请求之前自身发生了崩溃,导致最终只有部分参与者提交了事务,而其他参与者没有没有收到Commit请求,没有收到Commit请求的参与者无法进行事务提交,于是整个分布式系统便出现了数据不一致的现象。
    4).太过保守
    如果在协调者只是参与者进行事务提交询问的过程中,参与者出现故障而导致协调者无法获取到所有参与者的响应信息,这时候协调者只能依靠超时机制来判断是否终端事务,任意一个节点失败都会导致整个事务失败。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值