Zookeeper面试中的那些事。。。

166 阅读3分钟

前言

相信小伙伴们已经了解了什么是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...

后记

相信小伙伴们读完一定有不少收获吧,点赞解锁新功能,知道并尝试过得人比不知道,更能发现生活的美好。