从Paxos到Zookeeper分布式一致性原理与实践-------------2.一致性协议

1.2PC

2PC就是二段提交协议,简单来说就是把过程分为两个阶段来处理:

1.提交事务请求

      我们假如有A(协调者),B(参与者),C(参与者)三台服务器。首先A(协调者)向所有的参与者B和C发送一个提交事务的请求。然后所有的参与者B和C向A(协调者)发送一个反馈的响应。只有当所有的参与者发送的是成功的响应,协调着才能往下执行事务,并对执行的信息进行保存。只要有一个参与者不是反馈的成功的响应,即当前事务不允许执行。整个过程相当于一个投票,参与者有一票否决权。

2.执行事务提交

     如果参与者反馈给协调者都是成功的响应,即协调者就会进行事务的提交,然后协调者会向所有的参与者在发一个提交的请求,

所有的参与者在收到提交的请求后,会执行事务的提交操作,然后释放占有的资源。协调者在收到所有参与者事务执行成功的反馈后,则事务完成。

    异常情况:由于网络原因或者参与者中有出现异常的情况。参与者反馈给协调者中有失败的响应。协调者在收到失败的响应后,会向所有的参与者发送一个事务回滚的请求。参与者接收到协调者发送的回滚的请求后,会根据一阶段保存的日志执行事务的回滚,然后释放所占资源。然后向协调者发送一个回滚成功的响应。当协调者接收到所有的参与者回滚成功的响应后,会完成事务中断。

2PC的优缺点:

优点:原理简单,实现方便

缺点:同步阻塞,单点问题,脑裂,太过保守(强一致)


2.3PC

是2阶段的的改进版,将二阶段提交协议的提交过程一份为二,执行事务的预提交,然后在不出现错误的时间进行事务的真正提交。

优点:降低了参与者的阻塞范围,并且能够在出现单点故障后继续达成一致。

缺点:如果网络出现分区,此时协调者所在的节点与 参与者无法进行正常通信,而参与者依然会正常提交,导致了数据的不一致。


猜你喜欢

转载自blog.csdn.net/qq_37162911/article/details/82634031