2019年面试官最喜欢问的28道ZooKeeper面试题(23)

22. 集群支持动态添加机器吗?

其实就是水平扩容了 , Zookeeper 在这方面不太好 。 两种方式:

全部重启:关闭所有 Zookeeper 服务 , 修改配置之后启动 。 不影响之前客户端的会话 。

逐个重启:在过半存活即可用的原则下 , 一台机器重启不影响整个集群对外提供服务 。 这是比较常用的方式 。

3.5 版本开始支持动态扩容 。

23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?

不是 。 官方声明:一个 Watch 事件是一个一次性的触发器 , 当被设置了 Watch的数据发生了改变的时候 , 则服务器将这个改变发送给设置了 Watch 的客户端 , 以便通知它们 。

为什么不是永久的 , 举个例子 , 如果服务端变动频繁 , 而监听的客户端很多情况下 , 每次变动都要通知到所有的客户端 , 给网络和服务器造成很大压力 。

推荐阅读