面试题--Zookeeper

1. Zookeeper 是什么(了解)

Zookeeper 是一个 分布式协调服务 的开源框架, 主要用来解决分布式集群中应用系统
的一致性问题, 例如怎样避免同时操作同一数据造成脏读的问题.
ZooKeeper 本质上是 一个分布式的小文件存储系统 . 提供基于类似于文件系统的目录
树方式的数据存储, 并且可以对树中的节点进行有效管理. 从而用来维护和监控你存储的数
据的状态变化. 通过监控这些数据状态的变化,从而可以达到基于数据的集群管理.
在大数据生态系统里,很多组件的命名都是某种动物,比如 hadoop 就是大象, hive
就是蜜蜂, 而 Zookeeper 就是动物管理员.

2. Zookeeper 的数据模型(必会)

 ZK 本质上是一个分布式的小文件存储系统.
 ZK 表现为一个分层的文件系统目录树结构, 既能存储数据, 而且还能像目录一样有子
节点. 每个节点可以存最多 1M 左右的数据.
 每个节点称做一个 Znode, 每个 Znode 都可以通过其路径唯一标识.
 而且客户端还能给节点添加 watch, 也就是监听器, 可以监听节点的变化, 这个功能常
在实际开发中作为监听服务器集群机器上下线操作

3. Zookeeper 的 watch 监听机制(高薪常问)

 在 ZooKeeper 中还支持一种 watch(监听)机制, 它允许对 ZooKeeper 注册监听, 当监
听的对象发生指定的事件的时候, ZooKeeper 就会返回一个通知.
 Watcher 分为以下三个过程:客户端向 ZK 服务端注册 Watcher、服务端事件发生触
发 Watcher、客户端回调 Watcher 得到触发事件情况.
触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。
 Watcher 是一次性的. 一旦被触发将会失效. 如果需要反复进行监听就需要反复进行
注册.

4. Zookeeper 的应用场景(高薪常问)

ZK 提供的服务包括: 统一命名服务, 统一配置管理, 统一集群管理, 集群选主, 服务动
态上下线, 分布式锁等.

4.1 统一命名服务

统一命名服务使用的是 ZK 的 node 节点全局唯一的这个特点.
在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如:IP 不容易记
住,而域名容易记住。创建一个节点后, 节点的路径就是全局唯一的, 可以作为全局名称使
用.

4.2 统一配置管理

统一配置管理, 使用的是 Zookeeper 的 watch 机制
 需求: 分布式环境下, 要求所有节点的配置信息是一致的, 比如 Kafka 集群. 对配
置文件修改后, 希望能够快速同步到各个节点上.
 方案: 可以把所有的配置都放在一个配置中心, 然后各个服务分别去监听配置中心,
一旦发现里面的内容发生变化, 立即获取变化的内容, 然后更新本地配置即可.
 实现: 配置管理可交由 Zookeeper 实现
 可将配置信息写入 Zookeeper 上的一个 Znode.
 各个客户端服务器监听这个 Znode.
 一旦 Znode 中的数据被修改, Zookeeper 将通知各个客户端服务器.

4.3 统一集群管理

统一集群管理使用的是 Zookeeper 的 watch 机制
 需求: 分布式环境中, 实时掌握每个节点的状态是必要的, 可以根据节点实时状态
做出一些调整.
 方案: Zookeeper 可以实现实时监控节点状态变化
 可将节点信息写入 Zookeeper 上的一个 Znode.
 监听这个 Znode 可获取它的实时状态变化

相关推荐
库库林_沙琪马1 小时前
Redis 持久化:从零到掌握
数据库·redis·缓存
牵牛老人2 小时前
Qt中使用QPdfWriter类结合QPainter类绘制并输出PDF文件
数据库·qt·pdf
KTKong3 小时前
kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决
云原生·容器·kubernetes
小钊(求职中)4 小时前
Java开发实习面试笔试题(含答案)
java·开发语言·spring boot·spring·面试·tomcat·maven
bug404_4 小时前
分布式大语言模型服务引擎vLLM论文解读
人工智能·分布式·语言模型
卡西里弗斯奥4 小时前
【达梦数据库】dblink连接[SqlServer/Mysql]报错处理
数据库·mysql·sqlserver·达梦
温柔小胖5 小时前
sql注入之python脚本进行时间盲注和布尔盲注
数据库·sql·网络安全
lucky_syq5 小时前
Spark算子:大数据处理的魔法棒
大数据·分布式·spark
呱牛do it5 小时前
【系列专栏】银行IT的云原生架构-混合云弹性架构 13
微服务·云原生·金融·架构
杨俊杰-YJ5 小时前
MySQL 主从复制原理及其工作过程
数据库·mysql