-
Zookeeper 面试路线最全整理(附面试题精选及答案)
Zookeeper 面试路线最全整理,附 Zookeeper 高频必考面试题及答案。 搞定 Zookeeper 面试题,看这一篇就够了,不用四处找资料,节约大量时间。 1 Zookeeper 面试题及答案 基础 什么是 Zookeeper ZooKeeper 提供了什么 Zookeeper 的工作原理是什么 Zookeeper 有哪几种部署模式 Zookeeper的服务器角色有哪些 Zook…... -
Zookeeper 学习进阶路线及资料(附大厂面试题合集)
大厂招聘时,基本上都会要求深入掌握 Zookeeper 技术。 不仅要会用 Zookeeper ,还要深刻理解 Zookeeper 的原理和源码机制。 大厂的用户量级大、业务体量高,如果你没有深入掌握,一旦遇到高并发、大流量等业务场景,当线上生产环境出现偶然的系统问题时,就有可能定位不到问题,甚至会一脸懵逼地看着问题反复出现。 我最新总结的这份 Zookeeper 学习进阶路线及资料,包含了 Zo…... -
Zookeeper 的工作原理是什么
参考答案 Zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议的两种模式分别是恢复模式、广播模式。 当服务启动或者在领导者崩溃后, Zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 的完成了和 leader 的状态同步以后,恢复模式就结束了。 状态同步保证了 leader 和 server 具有相…... -
Zookeeper的投票机制实现是怎样实现的
参考答案 Zookeeper的投票机制实现: 每个 sever 首先给自己投票, 然后用自己的选票和其他 sever 选票对比,权重大的胜出,使用权重较大的更新自身选票箱。 选举过程: 每个 Server 启动以后都询问其它的 Server 它要投票给谁。对于其他 server 的询问,server 每次根据自己的状态都回复自己推荐的 leader 的 id 和上一次处理事务的zxid(系统启动时…... -
Zookeeper 队列管理
参考答案 1. 同步队列 当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。 在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。 2. 队列按照 FIFO 方式进行入队和出队操作。 入列有编号,出列按编号,和分布式锁服务中的控制时序场景的基本原理一致。 在特定的目录下创建 PERSISTENT_SEQUENTIAL 节点,创建成功时Watcher 通知等待的…... -
Zookeeper 分布式锁
参考答案 Zookeeper 的一致性文件系统,让锁的问题变得容易。 锁服务可以分为两类: 1. 保持独占 将 Zookeeper 上的一个 znode 看作是一把锁,通过 createznode的方式来实现。 所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。 用完之后,删除掉自己创建的 distribute_lock 节点,就释放出锁。 2…... -
Zookeeper 集群管理是什么
参考答案 集群管理主要指两点:是否有机器退出和加入、选举 master。 1. 是否有机器退出和加入 所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化消息。 一旦有机器挂掉,该机器与 zookeeper 的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道:它上船了。 新机器加入也是类似,所有机器收到通知:新兄弟目录加入,…... -
数据发布/订阅是什么
参考答案 数据发布/订阅系统,即所谓的配置中心,就是发布者发布数据,供订阅者进行数据订阅。 1. 数据发布/订阅的目的 动态获取数据(配置信息); 实现数据(配置信息)的集中式管理和数据的动态更新。 2. 设计模式 Push 模式; Pull 模式。 3. 数据(配置信息)特性 数据量通常比较小; 数据内容在运行时会发生动态更新; 集群中各机器共享,配置一致。例如:机器列表信息、运行时开关…... -
Zookeeper 的典型应用场景
参考答案 Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能。 例如: 数据发布/订阅; 负载均衡; 命名服务; 分布式协调/通知; 集群管理; Master 选举; 分布式锁…... -
ZAB 和 Paxos 算法的联系与区别
参考答案 ZAB 和 Paxos 算法的相同点: 两者都存在一个类似于 Leader 进程的角色 ,由其负责协调多个 Follower 进程的运行。 Leader 进程都会等待超过半数的 Follower 做出正确的反馈后 ,才会将一个提案进行提交。 ZAB 协议中, 每个 Proposal 中都包含一个 epoch 值来代表当前的 Leader周期 ,Paxos 中名字为 Ballot。 ZAB…... -
Zookeeper 对节点的 watch监听通知是永久的吗,为什么
参考答案 Zookeeper 对节点的 watch 监听通知不是永久的。一个 Watch 事件是一个一次性的触发器,当被设置了 Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch 的客户端,以便通知它们。 举例说明: 如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,给网络和服务器造成很大压力。 一般是客户端执行getData(“/节点 A”,…... -
集群支持动态添加机器吗
参考答案 3.5版本开始支持动态扩容。 两种方式实现: 全部重启:关闭所有 Zookeeper 服务,修改配置之后启动。不影响之前客户端的会话。 逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。 以上,是Zookeeper面试题【集群支持动态添加机器吗】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end…... -
Zookeeper 有哪几种部署模式
参考答案 Zookeeper的部署模式,有以下几种: 单机模式 伪集群模式 集群模式 以上,是Zookeeper面试题【Zookeeper 有哪几种部署模式】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---... -
分布式集群中为什么会有 Master
参考答案 分布式集群中有 Master的原因: 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader 选举。 以上,是Zookeeper面试题【分布式集群中为什么会有 Master】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---... -
Zookeeper 负载均衡和 Nginx 负载均衡的区别
参考答案 Zookeeper 负载均衡和 Nginx 负载均衡的主要区别: Nginx 是著名的反向代理服务器,被广泛的作为负载均衡服务器。 ZooKeeper 是分布式协调服务框架,有时也被用来做负载均衡。 ZooKeeper 的负载均衡是可以调控的;Nginx 只能调权重,其他需要可控的都需要自己写插件。 Nginx 的吞吐量比 ZooKeeper 大很多。 在开发环境中,按业务需求来选择使用…... -
Zookeeper 节点宕机如何处理
参考答案 Zookeeper 本身也是集群,推荐配置不少于 3 个服务器。 Zookeeper 自身也要保证当一个节点宕机时,其他节点会继续提供服务。 如一个 Follower 宕机,还有 2 台服务器提供访问,因为 Zookeeper 上的数据是有多个副本的,数据并不会丢失。 如一个 Leader 宕机,Zookeeper 会选举出新的 Leader。 Zookeeper 集群的机制是只要超过半…... -
Zookeeper 是如何保证事务的顺序一致性的
参考答案 Zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid。 zxid 实际上是一个 64 位的数字,高 32 位是 epoch(时期; 纪元; 世; 新时代)用来标识 leader 周期。 如果有新的 leader 产生出来,epoch会自增,低 32 位用来递增计数。当新产生 proposal 的时候,会依据数据库的两阶段…... -
Zookeeper 的数据同步有几种方式
参考答案 Zookeeper 的数据同步通常分为四类: 1. 直接差异化同步(DIFF 同步) 场景:peerLastZxid 介于 minCommittedLog 和 maxCommittedLog之间。 2. 先回滚再差异化同步(TRUNC+DIFF 同步) 场景:当新的 Leader 服务器发现某个 Learner 服务器包含了一条自己没有的事务记录,那么就需要让该 Learner 服…... -
Zookeeper 下 Server 工作状态
参考答案 服务器有四种状态:LOOKING、FOLLOWING、LEADING、OBSERVING。 LOOKING:寻找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。 FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。 LEADING:领导者状态。表明当前服务器角色是 Leader。 OBSERVIN…... -
Zookeeper的服务器角色有哪些
参考答案 Zookeeper 集群是一个基于主从复制的高可用集群,每个服务器承担如下三种角色中的一种。 1. Leader 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。 集群内部各服务的调度者。 2. Follower 处理客户端的非事务请求,转发事务请求给 Leader 服务器。 参与事务请求 Proposal 的投票。 参与 Leader 选举投票。 3. Observer 3…... -
会话管理了解吗
参考答案 分桶策略:将类似的会话放在同一区块中进行管理,以便于 Zookeeper 对会话进行不同区块的隔离处理、以及同一区块的统一处理。 分配原则:每个会话的“下次超时时间点”(ExpirationTime) ,计算公式: ExpirationTime_ = currentTime + sessionTimeout ExpirationTime = (ExpirationTime_ / Expi…... -
Chroot 的特性是什么
参考答案 3.2.0 版本后,添加了 Chroot 特性,该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot,那么该客户端对服务器的任何操作,都将会被限制在其自己的命名空间下。 通过设置 Chroot,能够将一个客户端应用于 Zookeeper 服务端的一颗子树相对应,在那些多个应用公用一个 Zookeeper 进群的场景下,对实现不同应用间的相互隔离非常有帮助。 以上…... -
ACL 权限的控制机制
参考答案 UGO(User/Group/Others)是一种粗粒度的文件系统权限控制模式,目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式。 ACL(Access Control List)访问控制列表包括三个方面: 1. 权限模式(Scheme) IP:从 IP 地址粒度进行权限控制。 Digest:最常用,用类似于 username:password 的权限标识来进…... -
服务端处理 Watcher 的实现过程
参考答案 1. 服务端接收 Watcher 并存储 接收到客户端请求,处理请求判断是否需要注册 Watcher,如需要,就将数据节点的节点路径和 ServerCnxn存储在WatcherManager 的 WatchTable 和 watch2Paths 中(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的process 接口,此时可以看成一个 Watcher 对象…...