崩溃恢复的实现原理

前面我们已经清楚了ZAB协议中的消息广播过程,ZAB协议的这个基于原子广播协议的消息广播过程,在正常情况下是没有任何问题的,但是一旦Leader节点崩溃,或者由于网络问题导致Leader服务器失去了过半的Follower节点的联系(leader失去与过半follower节点联系,可能是leader节点和follower节点之间产生了网络分区,那么此时的leader不再是合法的leader了),那么就会进入到崩溃恢复模式。崩溃恢复状态下zab协议需要做两件事

1. 选举出新的leader

2. 数据同步

前面在讲解消息广播时,知道ZAB协议的消息广播机制是简化版本的2PC协议,这种协议只需要集群中过半的节点响应提交即可。但是它无法处理Leader服务器崩溃带来的数据不一致问题。因此在ZAB协议中添加了一个“崩溃恢复模式”来解决这个问题。

那么ZAB协议中的崩溃恢复需要保证,如果一个事务Proposal在一台机器上被处理成功,那么这个事务应该在所有机器上都被处理成功,哪怕是出现故障。为了达到这个目的,我们先来设想一下,在zookeeper中会有哪些场景导致数据不一致性,以及针对这个场景,zab协议中的崩溃恢复应该怎么处理。

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/112912417
今日推荐