面试题--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 可获取它的实时状态变化

相关推荐
瓜牛_gn37 分钟前
mysql特性
数据库·mysql
奶糖趣多多2 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt3 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
paopaokaka_luck4 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
师太,答应老衲吧5 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
昌sit!5 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
Yaml46 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
P.H. Infinity6 小时前
【RabbitMQ】03-交换机
分布式·rabbitmq
Channing Lewis6 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce
aloha_7896 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot