前言
相信小伙伴们已经了解了什么是Zookeeper了,我们在这里回顾一下。Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。今天,小编我就来跟大伙聊一聊面试中常见的面试题。
一,企业面试真题
1.1请你简述Zookeeper的选举机制
1)半数机制:集群中半数以上的机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。
2)Zookeeper虽然在配置文件中没有指定Master和Slave。但是,Zookeeper工作时,是有一个节点为ledader,其他节点为follow,且leader是通过内部的选举机制临时产生的。
3)以一个简单的例子来说明整个选举的过程
假设有五台服务器组成的 Zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的, 也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来 看看会发生什么,如下图所示:
(1)服务器 1 启动,发起一次选举。服务器 1 投自己一票。此时服务器 1 票数一票, 不够半数以上(3 票),选举无法完成,服务器 1 状态保持为 LOOKING;
(2)服务器 2 启动,再发起一次选举。服务器 1 和 2 分别投自己一票并交换选票信息: 此时服务器 1 发现服务器 2 的 ID 比自己目前投票推举的(服务器 1)大,更改选票为推举 服务器 2。此时服务器 1 票数 0 票,服务器 2 票数 2 票,没有半数以上结果,选举无法完成, 服务器 1,2 状态保持 LOOKING
(3)服务器 3 启动,发起一次选举。此时服务器 1 和 2 都会更改选票为服务器 3。此 次投票结果:服务器 1 为 0 票,服务器 2 为 0 票,服务器 3 为 3 票。此时服务器 3 的票数已 经超过半数,服务器 3 当选 Leader。服务器 1,2 更改状态为 FOLLOWING,服务器 3 更改 状态为 LEADING;
(4)服务器 4 启动,发起一次选举。此时服务器 1,2,3 已经不是 LOOKING 状态, 不会更改选票信息。交换选票信息结果:服务器 3 为 3 票,服务器 4 为 1 票。此时服务器 4 服从多数,更改选票信息为服务器 3,并更改状态为 FOLLOWING;
(5)服务器 5 启动,同 4 一样当小弟。
1.2Zookeeper的监听原理是什么?
监听原理详解
1)首先要有一个main进程
2)在main进程中创建Zookeeper客户端,这时就会创建两个线程,一个线程负责网络连接通信(connect),一个线程负责监听(listen)
3)通过connect线程将注册的监听事件发送给Zookeeper
4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中
5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listen线程
6)listen线程内部调用了process()方法
常见的监听
1)监听节点数据的变化
get path[watch]
2)监听子节点增减的变化 ls path[watch]
1.3Zookeeper的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?
(1)部署方式单机模式、集群模式
(2)角色:Leader 和 Follower
(3)集群最少需要机器数:3
1.4Zookeeper的常用命令
ls
create
get
delete
set...
后记
相信小伙伴们读完一定有不少收获吧,点赞解锁新功能,知道并尝试过得人比不知道,更能发现生活的美好。