哈嘍!大家好,我是小奇,一位不靠譜的程序員
小奇打算以輕松幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新
一、前言
今天又是一個陽光明媚的一天,我又懷着沉重的心情踏上了面試的道路,有時我就在懷疑自己,自己是不是不適合程序員這個職業,難道真的要去做段子手。。。
不知不覺的走到了要面試公司的樓下,興奮又期待的撥通了hr的電話,多希望她會說一句:上來吧,給你留門了。。。
遺憾的是並沒有給我留門,不過沒關系,我已經記住門牌號了,我可以半夜爬你家窗戶。。。
進來后hr小姐姐讓我在會議室里稍作等待,等了一會后進來一個身材魁梧、一米八五的壯漢,我心想這應該就是面試官吧,這次看着不好惹啊,我這次還是收斂點吧,但是我看他戴着一個黑色墨鏡,我心想難道他是。。。
二、面試
面試官:小奇是吧,先做一個自我介紹吧
我:您是盲人?
面試官:不是啊,怎么這么問呢?
我:不是盲人你手里拿着我的簡歷怎么還讓我介紹呢?
面試官:不是,這是流程懂不懂,在你介紹的過程中我可以好好看看你的簡歷
我:(我站起來奪過了面試官手中的簡歷扔到了地上)不用看我的簡歷了,你就記住兩個字,精通就完了。
面試官:(面試官瑟瑟發抖)什么都精通?
我:那必須的。
三、Zookeeper中Leader選舉機制
面試官:那你說一說zookeeper中leader選舉機制吧
我:給我上三個小姐姐。。。
面試官:大哥,你是來面試的,這里不是足浴店。。。
我:我知道,我讓他們三個模仿zookeeper節點,來帶你生動形象的了解一下zookeeper是怎么選舉的。
面試官:那好吧,這確實是一個不錯的理由,以后我就可以隨便。。。
此時進來了三個小姐姐,大姐美麗端庄,暫且叫她大端庄吧,二姐閉月羞花,暫且叫她二羞花吧,三姐國色天香,暫且叫她三天香吧。
我:我現在給你們每個人一個選票,上面可以寫兩個數,第一個數代表你們自己,每個人的都不一樣,你們第一個數就按照1、2、3來吧。第二個數你們可以隨便填寫。
這時大端庄寫的是(1,0),二羞花寫的是(2,0),三天香寫的是(3,0)
這個時候我們假如先啟動兩個節點,一個是大姐,一個是二姐。
這個時候大姐把手里的票發送一個副本給二姐,二姐把手里的票也發送一個副本給大姐。
這個時候大姐用二姐發給自己的票和自己手里的票比較,先比較后一位,如果對方比自己的大,那么就丟棄自己的票,而保留對方的票,如果對方比自己的小而丟棄對方的票而保留自己的,如果相等就比較第一位數,如果兩位數都相等則兩個票都保留。
大姐是(1,0),二姐是(2,0),最后一位都相等,則比較第一位,第一位二姐是2大於大姐的1,所以大姐丟棄自己原來的票據,而保存二姐發過來的票據。
由於二姐的票比大姐的大,所以二姐自己的票不用丟棄,丟棄大姐給的副本就好。
這個時候雙方再次相互發送票據。
這個時候由於雙方票據大小都一樣,則不僅保存自己的票據還要保存對方發送的副本票據,此時兩個人的票據情況如下。
這個時候由於每個人所持有的票數大於總節點的一半(這里只有大姐、二姐兩個節點,所以總節點是2)這里就確定了leader應該是(2,0)對應的節點,也就是二姐是leader。
面試官:那小三呢,三姐天香還沒有啟動呢
我:別急,現在三姐天香啟動后發現已經選舉出leader了,所以三姐天香就直接將自己變為follower角色。
面試官:嗯,我明白你的意思,那你能最后總結一下比較那里是怎么比較的嗎,我有點暈
我:好的,比較那里只有三種情況,一種是自己大於對方,第二種是對方大於自己,第三種是兩人相等。
自己大於對方:將對方發過來的票扔掉,保存自己的票。
對方大於自己:將自己的票扔掉,保存對方的票。
兩人相等:將自己和對方發過來的票都保存。
面試官:嗯,那我要是想當leader就直接把票改大一點不就行了,票里的數據怎么來的呢?
我:票里兩個數一個是myid,一個是zxid,myid是節點的唯一標識,在啟動節點之前需要配置好,而zxid在數據修改后會增加,zxid越大證明這個節點里的數據越新。
面試官:哦,那意思就是節點數據越新的就最有資格當leader唄
我:是這樣的。。。
面試官:小伙子真厲害啊,我這邊沒有什么要問的了,你還有什么問題要問我的嗎
我:額。。。那三個小姐姐的微信你有嗎?
面試官:咳,只要你來,別說三個了,就是三百個也不在話下
我:那現在去辦理入職吧。。。
面試官:別急呀,你得先去體檢,證明你可以的哦。。。
我:那我肯定沒有問題呀。
面試官:你還有其他同學嗎,給我推薦幾個
我:有,跟我一起學習小奇趣學編程系列的有不少人,我都給你介紹過來吧。
面試官:好啊,我這里正缺人呢。。。
我:那我先去體檢了啊,記着我的三百個。。。
四、總結
這里關於zookeeper還沒有整理完畢,文章后面持續更新,建議收藏。
文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。
如果覺得我的文章還不錯的話就點個贊吧