您的位置:首页 > 其它

Zookeeper 节点宕掉之后的工作

2013-11-06 16:51 211 查看
假设咱们有5台机器:A-1 B-2 C-3 D-4 E-5 (后面的数字为myid)。

为简化过程咱们使用第一次启动ZK,假设是按我之前写的顺序启动,那么应该是C为leader,其它节点为follower(为什么会这样?请大家自行充电ZK选举算法)。

在集群的运行情况下,会有读写的操作,而咱们需要关注的是写操作。ZK集群为保证数据的一致性所有的操作都是由leader完成,之后再由leader同步给follower。重点就在这儿,ZK并不会确保所有节点都同步完数据,只要有大多数节点(即n/2+1)同步成功即可。

咱们假设有一个写操作成功那么现在数据只存在于节点C,之后C再同步给A与B。

结果:

这时候宕掉任意三个节点,根据选举策备可知这两个节点并不能选出leader(因为无论怎么选都不会有超过半数的节点支持其中一个节点),所以两个节点都转到looking状态--即无法正常服务。

但是如果有一台恢复那么至少会有一个节点存有最新的数据,那么在选举中这个节点将会被选为leader,然后将数据同步到其它节点--即恢复服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: