Zookeeper 如何选举master 主节点?
-
还记得上面我们的所说的临时节点吗?因为
Zookeeper
的强一致性,能够很好地在保证 在高并发的情况下保证节点创建的全局唯一性 (即无法重复创建同样的节点)。利用这个特性,我们可以 让多个客户端创建一个指定的节点 ,创建成功的就是
master
。但是,如果这个
master
挂了怎么办???你想想为什么我们要创建临时节点?还记得临时节点的生命周期吗?
master
挂了是不是代表会话断了?会话断了是不是意味着这个节点没了?还记得watcher
吗?我们是不是可以 让其他不是master
的节点监听节点的状态 ,比如说我们监听这个临时节点的父节点,如果子节点个数变了就代表master
挂了,这个时候我们 触发回调函数进行重新选举 ,或者我们直接监听节点的状态,我们可以通过节点是否已经失去连接来判断master
是否挂了等等。总的来说,我们可以完全 利用 临时节点、节点状态 和
watcher
来实现选主的功能,临时节点主要用来选举,节点状态和watcher
可以用来判断master
的活性和进行重新选举。