1. 请简述ZooKeeper的选举机制
ZooKeeper的选举机制为半数机制, 意思就是汲取中如果半数以上的机器存活, 集群才可用. Zookeeper的leader选举时, 如果投票数量没有大于集群数量的一半, 就将票在下一次投票的时候投给id比自己大的机器, 以此类推, 当票数达到半数就可以推选出leader为哪台机器, 其余的机器都为follower.
2. ZooKeeper的监听原理是什么?
首先我们需要创建一个main()线程, 在main线程中创建zkClient, 这是我们换回创建2个下线程, 一个connect负责网络连接, 一个Listener负责监听; 通过Connect线程将注册的监听事件发送给Zookeeper, 然后将注册的监听事件添加到Zookeeper的注册监听器列表中, 如果Zookeeper监听到有数据或者是有路径变化, 就会自动将这个消息发送给listener线程, listener线程内部调用了process()方法.
3. ZooKeeper的部署方式有哪几种?集群中的角色有哪些?集群中最少需要几台机器?
(1)ZooKeeper的部署方式有两种, 一种是单机模式, 一种是集群模式
(2)集群中的角色一共有两种, 一种是Leader, 一种是Follower
(3)集群中最少需要3台机器, 我们在部署集群时, 一般部署的是奇数台, 不部署偶数台机器, 举个例子, 部署3台机器和部署4台机器的容错性是相同的, 为了避免资源浪费, 部署3台机器就好
4. ZooKeeper的常用命令
help用于显示所有操作的命令; ls 查看节点,通过添加-w来监听节点; create用于创建节点, 不可以创建多层节点, 可以创建普通持久化的节点, 临时节点(-e), 还有带序列(-s)的节点; set 用于设置节点的值; get用于获取节点的值; stat查看节点具体的状态; delete删除节点; deleteall递归删除节点