每日五道java面试题之ZooKeeper篇(一),ZooKeeper面试题精选,每日五题解析(一)

马肤

温馨提示:这篇文章已超过462天没有更新,请注意相关的内容是否还可用!

摘要:本篇内容围绕每日五道Java面试题中的ZooKeeper篇展开,主要介绍了关于ZooKeeper的相关面试题。通过这些问题,考察应聘者在ZooKeeper方面的知识和经验,包括ZooKeeper的基本概念、集群管理、分布式锁等方面的理解和应用。这些问题的解答有助于了解应聘者在分布式系统领域的能力,以及解决相关问题的能力。

1、ZooKeeper 是什么?

每日五道java面试题之ZooKeeper篇(一),ZooKeeper面试题精选,每日五题解析(一) 第1张

ZooKeeper是一个开源的分布式协调服务,为分布式应用提供一致性服务,它允许分布式应用程序实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能,ZooKeeper的目标是为用户提供简单易用的接口和高效、稳定的系统,同时封装了复杂易出错的关键服务,它保证了分布式一致性特性,如顺序一致性、原子性、单一视图、可靠性和实时性(最终一致性)。

客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理,写请求会同时发给其他zookeeper机器并达成一致后,请求才会返回成功,随着zookeeper的集群机器增多,读请求的吞吐会提高,但写请求的吞吐会下降。

有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,称为zxid(ZookeeperTransaction Id),而读请求只会相对于更新有序,即读请求的返回结果中会带有这个zookeeper最新的zxid。

2、Zookeeper 文件系统

Zookeeper提供了一个多层级的节点命名空间(节点称为znode),与文件系统不同的是,这些节点都可以设置关联的数据,Zookeeper为了高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。

3、Zookeeper如何保证主从节点的状态同步?

Zookeeper的核心是原子广播机制,这个机制保证了各个server之间的同步,实现这个机制的协议叫做Zab协议,Zab协议有两种模式:恢复模式和广播模式。

恢复模式:当服务启动或在领导者崩溃后,Zab进入恢复模式,当领导者被选举出来,且大多数server完成了和leader的状态同步后,恢复模式结束,状态同步确保了leader和server具有相同的系统状态。

广播模式:一旦leader与多数follower进行了状态同步后,它就可以开始广播消息,即进入广播状态,当一个server加入ZooKeeper服务时,它会在恢复模式下启动,找到leader并与leader进行状态同步,同步结束后,它也参与消息广播,ZooKeeper服务一直维持在Broadcast状态,直到leader崩溃或失去大部分的支持。

4、四种类型的数据节点Znode

(1)PERSISTENT-持久节点:除非手动删除,否则节点一直存在于Zookeeper上。

每日五道java面试题之ZooKeeper篇(一),ZooKeeper面试题精选,每日五题解析(一) 第2张

(2)EPHEMERAL-临时节点:临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。

(3)PERSISTENT_SEQUENTIAL-持久顺序节点:基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

(4)EPHEMERAL_SEQUENTIAL-临时顺序节点:基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

5、Zookeeper Watcher 机制 – 数据变更通知

Zookeeper允许客户端向服务端的某个Znode注册一个Watcher监听,当服务端的一些指定事件触发了这个Watcher,服务端会向指定客户端发送一个事件通知,实现分布式的通知功能,然后客户端根据Watcher通知状态和事件类型做出业务上的改变。

工作机制:

(1)客户端注册watcher。

(2)服务端处理watcher。

(3)客户端回调watcher,Watcher特性总结如下:

一次性:无论是服务端还是客户端,一旦一个Watcher被触发,Zookeeper都会将其从相应的存储中移除,这样的设计有效减轻了服务端的压力,Watcher的触发是异步的,并且只能保证最终的一致性而无法保证强一致性,当一个客户端连接到一个新的服务器上时,watch将会被以任意会话事件触发等特性进行了详细说明,如果我的内容对您有帮助,请点赞、评论和收藏,您的支持是我坚持下去的动力!


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码