面試官:說一說Zookeeper中Leader選舉機制

曠世奇才927發表於2022-04-07

哈嘍!大家好,我是小奇,一位不靠譜的程式設計師
小奇打算以輕鬆幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新

一、前言

今天又是一個陽光明媚的一天,我又懷著沉重的心情踏上了面試的道路,有時我就在懷疑自己,自己是不是不適合程式設計師這個職業,難道真的要去做段子手。。。

不知不覺的走到了要面試公司的樓下,興奮又期待的撥通了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還沒有整理完畢,文章後面持續更新,建議收藏。

文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。

如果覺得我的文章還不錯的話就點個贊吧

相關文章