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

相关推荐
7哥♡ۣۖᝰꫛꫀꪝۣℋ2 分钟前
Spring-cloud\Eureka
java·spring·微服务·eureka
Σίσυφος190012 分钟前
PCL法向量估计 之 方向约束法向量(Orientation Guided Normal)
数据库
老毛肚15 分钟前
手写mybatis
java·数据库·mybatis
海山数据库21 分钟前
移动云大云海山数据库(He3DB)postgresql_anonymizer插件原理介绍与安装
数据库·he3db·大云海山数据库·移动云数据库
云飞云共享云桌面24 分钟前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
袁煦丞 cpolar内网穿透实验室30 分钟前
远程调试内网 Kafka 不再求运维!cpolar 内网穿透实验室第 791 个成功挑战
运维·分布式·kafka·远程工作·内网穿透·cpolar
2501_9279935332 分钟前
SQL Server 2022安装详细教程(图文详解,非常详细)
数据库·sqlserver
星火s漫天33 分钟前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask
xcLeigh38 分钟前
Python 项目实战:用 Flask 实现 MySQL 数据库增删改查 API
数据库·python·mysql·flask·教程·python3
威迪斯特39 分钟前
Flask:轻量级Web框架的技术本质与工程实践
前端·数据库·后端·python·flask·开发框架·核心架构