面試官:Zookeeper是什么,它有什么特性與使用場景?

      網友投稿 753 2025-03-31

      哈嘍!大家好,我是小奇,一位不靠譜的程序員

      小奇打算以輕松幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧

      文章持續更新,可以微信搜索【小奇JAVA面試】第一時間閱讀,回復【資料】更有我為大家準備的福利喲!

      一、前言

      作為一名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有幾種常用的數據格式呢?

      我: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面試】閱讀更多的好文章,獲取我為大家準備的資料。

      ZooKeeper

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何給wps中圖表的坐標軸添加單位(wps坐標軸上方加一個單位)
      下一篇:Excel數據輸入技巧一個簡單快捷而準確的輸入內容技巧(Excel輸入技巧)
      相關文章
      亚洲熟妇少妇任你躁在线观看| 精品久久久久久亚洲精品| 97se亚洲国产综合自在线| 亚洲AV乱码久久精品蜜桃| 亚洲熟女少妇一区二区| 国产亚洲午夜高清国产拍精品| 亚洲国产日韩在线观频| 亚洲国产成人久久综合一区77| 亚洲欧美在线x视频| 色偷偷亚洲第一综合网| 在线观看亚洲电影| 亚洲成AⅤ人影院在线观看| 人人狠狠综合久久亚洲高清| 国产精品亚洲二区在线| 亚洲国产精品尤物YW在线观看| 久久久久亚洲国产AV麻豆| 亚洲av中文无码字幕色不卡| 久久亚洲中文无码咪咪爱| 亚洲欧美日韩中文二区| 精品亚洲AV无码一区二区 | 亚洲va在线va天堂va手机| 亚洲午夜精品国产电影在线观看| 亚洲乱人伦精品图片| 久久精品国产亚洲αv忘忧草| 亚洲人成77777在线观看网| 亚洲中文字幕久久精品蜜桃| 亚洲中文字幕久久无码| 亚洲精品成a人在线观看夫| 亚洲?v女人的天堂在线观看| 亚洲视频人成在线播放| 国产综合亚洲专区在线| 国产偷v国产偷v亚洲高清| 亚洲国产精品婷婷久久| 亚洲精品456在线播放| 亚洲人成综合网站7777香蕉 | 久久精品国产亚洲AV麻豆不卡| 99ri精品国产亚洲| 亚洲一区二区三区播放在线| 亚洲精品无码mⅴ在线观看| 亚洲av成人一区二区三区在线观看| 亚洲性久久久影院|