论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
面试官:Zookeeper是什么,它有什么特性与使用场景? ...
面试官:Zookeeper是什么,它有什么特性与使用场景?
勿忘初心做自己
金牌会员
|
2022-6-26 07:28:51
|
显示全部楼层
|
阅读模式
楼主
主题
864
|
帖子
864
|
积分
2592
哈喽!大家好,我是小奇,一位不靠谱的程序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!
文章目录
一、前言
二、面试
三、Zookeeper是什么
四、Zookeeper有哪些数据结构
五、Zookeeper有哪些核心功能
六、Zookeeper有哪些权限控制
七、Zookeeper数据持久化
八、总结
一、前言
作为一名Java程序员,Zookeeper底层的一些原理是我们
不必学会
就可以搬砖工作的一种技能点,但是小奇为什么还要讲一下呢?难道就是为了浪费大家
1分钟
的宝贵时间,一个人1分钟,50万人就是
1年
,5000万人就是
100年
,赚了,小奇以一己之力成功搞挂一个人(血赚)。
当然不是,并且小奇的文章也没有那么多人看,最多也就浪费个
肾
吧。
学习Zookeeper底层原理是因为
面试官要问啊
!,所以我们就要学,什么?不实用的你不学?那邻居小奇可要使劲学啦,到时候面试官只要小奇不要你。
至于你问为什么面试官要问Zookeeper底层原理呢,这个。。。我把这次机会留给你,下次你面试的时候面试官问:“讲一下Zookeeper底层原理”。你:“面试官你好,请问为什么你要问Zookeeper底层原理呢,你给我台电脑,我
五分钟
给你搭建好
图书管理系统
他不香吗,咱们键盘上见真章”。这时面试官就会告诉你答案,你就可以把答案打在评论区,让小奇以及众多小伙伴一起知道一下到底为什么要问?
二、面试
在一个晴朗的周日,我来到了一个陌生的园区(别问为什么是周日,问就是997,不过为了填饱肚子的打工人,只能明知山有虎、偏向虎山行),坐在陌生的会议室,等待HR小姐姐去叫面试官,此时我的心情和各位小伙伴一样五味杂陈,
担心面试官问的会不会很难?问到我的知识盲区我该怎么办?一会自我介绍的时候要不要吹一下我和小奇的关系?
一位英俊潇洒,眼神犀利的面试官走了进来,看到他那犀利、仿佛能看穿一切的眼神 ,我在想要不然一会就不要20k了,要8k得了,这个面试官一看就不好糊弄啊,但是我想起来我来之前刚看了小奇的趣学编程系列,我已经完全学会了小奇的精髓,我顿时就来了底气,决定一会要30k,不给就学小奇赖着不走(哈哈)
面试官:小奇是吧,带简历了吗?
我:没带,现在彩印两块一张,我简历五张,每次面试都要花费十块,我朋友说了还没工作就先让你掏钱的工作不要去。
面试官:。。。那你靠什么来征服我,让我录用你
我:气质?
(此时面试官并没有叫保安,而是从门后拿出了恭候我多时的棍子,我瞬间怂了)
我只好从我的双肩包中拿出了我上午从其他公司面试官手中
要回的简历
,上午的情形是这样的。
上午的面试官:今天的面试就到这吧,回去等通知吧!
我:面试官你好,如果贵公司不打算录取我的话,
能不能把我的纸质简历还给我
,我下午还有一家面试。
上午的面试官:我说你的简历怎么皱皱巴巴,原来你一直在循环利用啊!这个症状出现多久了?
我:
半拉月了
。。。
(当我把皱皱巴巴的简历交给面试官后,这场面试才得以继续进行。。。)
三、Zookeeper是什么
面试官:我看你简历上写的精通Zookeeper?(哼,面试官轻蔑的一笑)
我:本来不想写精通的,但是同行们抬爱,非逼着写,但是也无可厚非,虽说没有到达炉火纯青,但是也差不多登峰造极了吧。
面试官:呵呵、那你先说一说Zookeeper是什么吧
我:ZooKeeper是一个分布式的,开放源码的
分布式应用程序协调服务
,主要为了解决分布式架构下数据一致性问题,典型的应用场景有分布式配置中心、分布式注册中心、分布式锁、分布式队列、集群选举、分布式屏障、发布/订阅等场景。
面试官:嗯,Zookeeper是怎样的一个数据结构呢?
我:Zookeeper是一个类似于文件系统的数据结构,最外层我们可以想象成一个大的文件夹,里面都是一些小的文件夹。
四、Zookeeper有哪些数据结构
面试官:嗯,Zookeeper有几种常用的数据格式呢?
我:Zookeeper中每一个子目录项都是一个
znode(目录节点)
,这些目录节点和我们普通的目录一样可以新建、删除、修改,我们常用的主要有四种类型的znode。
1、持久化目录节点:
客户端与zookeeper断开连接后,该节点依旧存在,只要不手动删除该节点,他将永远存在。
2、持久化顺序编号目录节点:
客户端与zookeeper断开连接后,该节点依旧存在,只是zookeeper给该节点名称进行顺序编号。
3、临时目录节点:
客户端与zookeeper断开连接后,该节点被删除。
4、临时顺序编号目录节点:
客户端与zookeeper断开连接后,该节点被删除,只是zookeeper给该节点名称进行顺序编号。
五、Zookeeper有哪些核心功能
面试官:嗯,Zookeeper有哪些核心的功能呢?
我:zookeeper有监听通知机制,如果对某个节点进行监听,当这个节点被删除,或者被修改时,监听方会感知到修改消息。
面试官:嗯,既然zookeeper有监听机制,那么可以监听到几种类型的变化呢?
我:可以监听到七种类型变化:
1、None:连接建立事件
2、NodeCreated:节点创建
3、NodeDeleted:节点删除
4、NodeDataChanged:节点数据变化
5、NodeChildrenChanged:子节点列表变化
6、DataWatchRemoved:节点监听被移除
7、ChildWatchRemoved:子节点监听被移除
面试官:我们在开发中使用Synchronized就可以保证线程安全了,为什么还需要使用zookeeper来实现分布式锁呢?
我:如果我们是单机情况下也就是只有一个进程的情况下使用Synchronized是可以保证线程安全的。但是分布式情况下是多个不同的进程,而不是一个进程里面不同的线程,所以Synchronized是无法保证多个进程安全的。
面试官:zookeeper节点有哪些重要信息呢,怎么进行查看?
我:zookeeper节点可以通过stat命令来查看主要信息,其中信息有:
1、cZxid:创建znode的事务id(Zxid的值)。
2、mZxid:最后修改znode的事务id。
3、pZxid:最后添加或删除子节点的事务id(子节点列表发生变化才会发生改变)。
4、ctime:znode创建时间。
5、mtime:znode最近修改时间。
6、dataVersion:znode的当前数据版本。
7、cversion:znode的子节点结果集版本(一个节点的子节点增加、删除都会影响这个版本)。
8、aclVersion:表示对此znode的acl版本。
9、ephemeralOwner:znode是临时znode时,表示znode所有者的sessionid,如果znode不是临时节点,则该字段设置为零。
10、dataLength:znode数据字段的长度。
面试官:zookeeper创建节点,和监听节点有哪些命令?
我:
1、创建持久节点:create /节点名称
2、创建持久顺序节点:create -s /节点名称
3、创建临时节点:create -e /节点名称
4、创建临时顺序节点:create -e -s /节点名称
5、监听节点:get -w /节点名称
六、Zookeeper有哪些权限控制
面试官:zookeeper有哪些权限控制呢?
我:应该是按照大小个吧,谁个高谁说了算。
面试官:你特么找打是吧,数据那特么有大小个。。。
我:zookeeper有ACL( Access Control List )权限控制,可以控制节点的读写操作,保证数据的安全性,不然的话谁都可以创建和删除节点,那不就乱了套了。
面试官:ACL权限设置有几部分组成呢?
我:有三部分组成,分别是
权限模式、授权对象、权限信息
。
面试官:能具体说一说这三部分都代表什么吗?
我:
权限模式:
就是zookeeper服务器进行权限验证的方式,比如手机解锁是用指纹还是用密码呢,如果用密码,知道密码的都可以解锁你的手机,如果用指纹,只有你自己的手指头可以解锁。所以权限模式大体分为两种类型:
1、范围验证:
范围就是zookeeper可以针对一个ip或者一段ip地址授予权限,相当于指纹解锁,我给我一个手指头,或者所有的脚指头都授予权限。
2、口令验证:
可以理解为用户名密码的方式,这种就相当于密码解锁了,知道了用户名密码后所有的人都相当于授予了权限。
授权对象:
授权对象就是把权限授予给谁,如果是范围验证方式,那么授权对象就是ip地址,如果是口令验证,授权对象就是用户名。
授权信息:
授权信息就是指我们具体的权力是什么,比如我们解锁手机后可以打游戏还是可以听歌,还是可以用手机砸核桃呢。
zookeeper中定义好的权限有5种:
1、数据节点(c:create)创建权限,授予权限的对象可以在数据节点下创建子节点。
2、数据节点(w:wirte)更新权限,授予权限的对象可以更新该数据节点。
3、数据节点(r:read)读取权限,授予权限的对象可以读取该节点的内容以及子节点的列表信息。
4、数据节点(d:delete)删除权限,授予权限的对象可以删除该数据节点的子节点。
5、数据节点(a:admin)管理者权限,授予权限的对象可以对该数据节点体进行ACL权限设置。
面试官:我们怎么查看和设置某个节点的ACL权限信息呢
我:可以通过getAcl来获取某个节点的权限信息,通过setAcl来设置某个节点的权限信息。
七、Zookeeper数据持久化
面试官:zookeeper的数据是存储在内存中的吗,怎么进行持久化操作呢?
我:zookeeper和redis很像,数据都是在内存中的,持久化也是两种方式,一种是记录事务日志,一种是快照方式。
记录事务日志磁盘会进行IO操作,事务日志的不断增多会触发磁盘为文件开辟新的磁盘块,所以为了提升磁盘的效率,可以在创建文件的时候就向操作系统申请一块大一点的磁盘块,通过参数zookeeper.preAllocSize配置。
事务日志的存放地址通过zoo.cfg配置文件中的dataDir来指定。
面试官:小伙子真厉害啊,我这边没有什么要问的了,你还有什么问题要问(面试官两眼放光)
我:额。。。面试官这个我的纸质简历可以给我吗,可以不往我的简历上写写画画吗,我明天的面试还要用。
面试官:还面啥别的公司啊,就来我这吧,条件随便开
我:那就100k吧(此时面试官又拿起了他准备好的棍子)
面试官:你要是不来就给我推荐一下,让别人来我这面试一下
我:你先好好学习一下zookeeper吧,今天幸亏只是我来了,如果是小奇的忠实读者来了,你将会被虐的很惨的。(我将我的博客地址留给了面试官,转身留下了帅气的背影,而面试官落寞无神的呆呆的坐在那里,仿佛一个亿离他而去。。。)
八、总结
这里关于zookeeper还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】阅读更多的好文章,获取我为大家准备的资料。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
勿忘初心做自己
金牌会员
这个人很懒什么都没写!
楼主热帖
集合论第6-8章
新一代企业级安全OneDNS
DNS协议
Java 代理模式
SignalR 2 与mvc 5实现实时聊天功能 ...
记一次有意思的业务实现 → 单向关注是 ...
反射 p1 反射机制
将git仓库从submodule转换为subtree ...
数字工厂介绍
redis 工具类
标签云
挺好的
服务器
快速回复
返回顶部
返回列表