zookeeper面试题
请简述 ZooKeeper 的选举机制
- 半数机制:集群中半数以上机器存活,集群可用。所以 Zookeeper 适合安装奇数台服务器。例如,5台服务器有3台存活,集群可用,而只有2台存活,集群不可用。
- Zookeeper 虽然在配置文件中并没有指定 Master 和 Slave。 但是, Zookeeper 工作时,是有一个节点为 Leader,其他则为 Follower, Leader 是通过内部的选举机制临时产生的。
- 选举的过程:选举半数及以上当选,从头到尾顺序开始,先选自己,发现自己当不了,再选后一位直到有节点当选。
半数机制,myid最大的为Leader
请简述 ZooKeeper 的主从数据同步机制
- 在最开始时选举出主节点,主节点发送快照和数据日志的方式让从节点能最开始同步数据
- 在主节点接收到写操作时,会先将该操作的日志发送给从节点,从节点接收完成并保存在磁盘中后,发送已接收到的信号给主节点,在主节点得知已有超一半的从节点已保存好日志后,发送提交信号给从节点让他们都一起根据写操作日志把数据给修改了
ZooKeeper 的监听原理是什么?
监听原理详解:
- 首先要有一个main()线程
- 在main线程中创建Zookeeper客户端(zkClient), 这时就会创建两个线程, 一个负责网络连接通信( connet ), 一个负责监听( listener )。
- 通过connect线程将注册的监听事件发送给Zookeeper(进行业务处理时调用监听(设为true))。
- 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
- Zookeeper监听到有数据或路径变化, 就会将这个消息发送给listener线程。
- listener线程内部调用了process()方法。
ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?
- 部署方式单机模式、集群模式
- 角色: Leader 和 Follower
- 集群最少需要机器数: 3
ZooKeeper 的常用命令
CRUD:
- C
- create
- R
- ls
- ls2
- get
- stat
- U
- set
- D
- delete
- rmr
- help