日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 架構(gòu)師社區(qū)
[導(dǎo)讀]Zookeeper 是一個分布式服務(wù)框架,主要是用來解決分布式應(yīng)用中遇到的一些數(shù)據(jù)管理問題如: 統(tǒng)一命名服務(wù) 、 狀態(tài)同步服務(wù) 、 集群管理 、 分布式應(yīng)用配置項(xiàng)的管理 等。我們可以簡單把 Zookeeper 理解為分布式家庭的大管家,那么管家團(tuán)隊(duì)是如何選出 Leader的呢?接下來帶領(lǐng)大家一探究竟。

Zookeeper 是一個分布式服務(wù)框架,主要是用來解決分布式應(yīng)用中遇到的一些數(shù)據(jù)管理問題如: 統(tǒng)一命名服務(wù) 、 狀態(tài)同步服務(wù) 集群管理 、 分布式應(yīng)用配置項(xiàng)的管理 等。
我們可以簡單把 Zookeeper 理解為分布式家庭的大管家,那么管家團(tuán)隊(duì)是如何選出 Leader的呢?好奇嗎,接下來帶領(lǐng)大家一探究竟。

人類選舉的基本原理

講解 Zookeeper 選舉過程前先來介紹一下人類的選舉。

我們每個人或多或少都經(jīng)歷過幾次選舉,在投票的過程中可能會遇到這樣幾種情況:

情況1:自己與幾個候選人都比較熟,你會將票投給你認(rèn)為能力比較強(qiáng)的人;

用大白話給你解釋Zookeeper的選舉機(jī)制
熟人選舉

情況2:自己也是候選人,并且與其他幾個候選人都不熟,這個時(shí)候你肯定想著要去拉票,因?yàn)橛X得自己才是最厲害的人呀,所有人都應(yīng)該把票投給我。但是遺憾的是在拉票的過程中,你發(fā)現(xiàn)別人比你強(qiáng),你開始自卑了,最終還是把票投給了自己認(rèn)為最強(qiáng)的人。

用大白話給你解釋Zookeeper的選舉機(jī)制
自己參與選舉

所有人都投完票之后,最后從投票箱中進(jìn)行統(tǒng)計(jì),獲得票數(shù)最多的人當(dāng)選。

用大白話給你解釋Zookeeper的選舉機(jī)制
思維導(dǎo)圖

在整個投票過程中我們可以提煉出四個最核心的概念:

  • 候選人能力:投票的基本原則是選最強(qiáng)的人。
  • 遇強(qiáng)改投:如果后面發(fā)現(xiàn)更強(qiáng)的人可以改投票。
  • 投票箱:所有人的票都會放在投票箱。
  • 領(lǐng)導(dǎo)者:得票最多的人即為領(lǐng)導(dǎo)者。

從人類選舉的原理我們來簡單推導(dǎo)一下Zookeeper的選舉原理。

Zookeeper選舉的基本原理

注意如果 Zookeeper 是單機(jī)部署是不需要選舉的,集群模式下才需要選舉。

Zookeeper 的選舉原理和人類選舉的邏輯類似,套用一下人類選舉的四個基本概念詳細(xì)解釋一下Zookeeper。

  • 個人能力

如何衡量 Zookeeper 節(jié)點(diǎn)個人能力?答案是靠數(shù)據(jù)是否夠新,如果節(jié)點(diǎn)的數(shù)據(jù)越新就代表這個節(jié)點(diǎn)的個人能力越強(qiáng),是不是感覺很奇怪,就是這么定的!

在 Zookeeper 中通常是以事務(wù)id(后面簡稱zxid)來標(biāo)識數(shù)據(jù)的新舊程度(版本),節(jié)點(diǎn)最新的zxid越大代表這個節(jié)點(diǎn)的數(shù)據(jù)越新,也就代表這個節(jié)點(diǎn)能力越強(qiáng)。

zxid 的全稱是 ZooKeeper Transaction Id,即 Zookeeper 事務(wù)id。

  • 遇強(qiáng)改投

在集群選舉開始時(shí),節(jié)點(diǎn)首先認(rèn)為自己是最強(qiáng)的(即數(shù)據(jù)是最新的),然后在選票上寫上自己的名字(包括zxidsid),zxid 是事務(wù)id,sid 唯一標(biāo)識自己。

緊接著會將選票傳遞給其他節(jié)點(diǎn),同時(shí)自己也會接收其他節(jié)點(diǎn)傳過來的選票。每個節(jié)點(diǎn)接收到選票后會做比較,這個人是不是比我強(qiáng)(zxid比我大),如果比較強(qiáng),那我就需要改票,明明別人比我強(qiáng),我也不能厚著臉皮對吧。

  • 投票箱

與人類選舉投票箱稍微有點(diǎn)不一樣,Zookeeper 集群會在每個節(jié)點(diǎn)的內(nèi)存中維護(hù)一個投票箱。節(jié)點(diǎn)會將自己的選票以及其他節(jié)點(diǎn)的選票都放在這個投票箱中。由于選票是互相傳閱的,所以最終每個節(jié)點(diǎn)投票箱中的選票會是一樣的。

  • 領(lǐng)導(dǎo)者

在投票的過程中會去統(tǒng)計(jì)是否有超過一半的選票和自己選擇的是同一個節(jié)點(diǎn),即都認(rèn)為某個節(jié)點(diǎn)是最強(qiáng)的。一旦集群中有超過半數(shù)的節(jié)點(diǎn)都認(rèn)為某個節(jié)點(diǎn)最強(qiáng),那該節(jié)點(diǎn)就是領(lǐng)導(dǎo)者了,投票也宣告結(jié)束。

什么場景下 Zookeeper 需要選舉?

當(dāng) Zookeeper 集群中的一臺服務(wù)器出現(xiàn)以下兩種情況之一時(shí),需要進(jìn)入 Leader 選舉

(1)服務(wù)器初始化啟動。

(2)服務(wù)器運(yùn)行期間 Leader 故障。

啟動時(shí)期的 Leader 選舉

假設(shè)一個 Zookeeper 集群中有5臺服務(wù)器,id從1到5編號,并且它們都是最新啟動的,沒有歷史數(shù)據(jù)。

用大白話給你解釋Zookeeper的選舉機(jī)制
集群剛啟動選舉過程

假設(shè)服務(wù)器依次啟動,我們來分析一下選舉過程:

(1)服務(wù)器1啟動

發(fā)起一次選舉,服務(wù)器1投自己一票,此時(shí)服務(wù)器1票數(shù)一票,不夠半數(shù)以上(3票),選舉無法完成。

投票結(jié)果:服務(wù)器1為1票。

服務(wù)器1狀態(tài)保持為LOOKING

(2)服務(wù)器2啟動

發(fā)起一次選舉,服務(wù)器1和2分別投自己一票,此時(shí)服務(wù)器1發(fā)現(xiàn)服務(wù)器2的id比自己大,更改選票投給服務(wù)器2。

投票結(jié)果:服務(wù)器1為0票,服務(wù)器2為2票。

服務(wù)器1,2狀態(tài)保持LOOKING

(3)服務(wù)器3啟動

發(fā)起一次選舉,服務(wù)器1、2、3先投自己一票,然后因?yàn)榉?wù)器3的id最大,兩者更改選票投給為服務(wù)器3;

投票結(jié)果:服務(wù)器1為0票,服務(wù)器2為0票,服務(wù)器3為3票。此時(shí)服務(wù)器3的票數(shù)已經(jīng)超過半數(shù)(3票),服務(wù)器3當(dāng)選Leader。

服務(wù)器1,2更改狀態(tài)為FOLLOWING,服務(wù)器3更改狀態(tài)為LEADING。

(4)服務(wù)器4啟動

發(fā)起一次選舉,此時(shí)服務(wù)器1,2,3已經(jīng)不是LOOKING 狀態(tài),不會更改選票信息。交換選票信息結(jié)果:服務(wù)器3為3票,服務(wù)器4為1票。此時(shí)服務(wù)器4服從多數(shù),更改選票信息為服務(wù)器3。

服務(wù)器4并更改狀態(tài)為FOLLOWING

(5)服務(wù)器5啟動

與服務(wù)器4一樣投票給3,此時(shí)服務(wù)器3一共5票,服務(wù)器5為0票。

服務(wù)器5并更改狀態(tài)為FOLLOWING

最終的結(jié)果

服務(wù)器3是 Leader,狀態(tài)為 LEADING;其余服務(wù)器是 Follower,狀態(tài)為 FOLLOWING。

運(yùn)行時(shí)期的Leader選舉

在 Zookeeper運(yùn)行期間 Leader非 Leader 各司其職,當(dāng)有非 Leader 服務(wù)器宕機(jī)或加入不會影響 Leader,但是一旦 Leader 服務(wù)器掛了,那么整個 Zookeeper 集群將暫停對外服務(wù),會觸發(fā)新一輪的選舉。

初始狀態(tài)下服務(wù)器3當(dāng)選為Leader,假設(shè)現(xiàn)在服務(wù)器3故障宕機(jī)了,此時(shí)每個服務(wù)器上zxid可能都不一樣,server1為99,server2為102,server4為100,server5為101

用大白話給你解釋Zookeeper的選舉機(jī)制
集群 Leader 節(jié)點(diǎn)故障

運(yùn)行期選舉與初始狀態(tài)投票過程基本類似,大致可以分為以下幾個步驟:

(1)狀態(tài)變更。Leader 故障后,余下的非 Observer 服務(wù)器都會將自己的服務(wù)器狀態(tài)變更為LOOKING,然后開始進(jìn)入Leader選舉過程

(2)每個Server會發(fā)出投票。

(3)接收來自各個服務(wù)器的投票,如果其他服務(wù)器的數(shù)據(jù)比自己的新會改投票。

(4)處理和統(tǒng)計(jì)投票,每一輪投票結(jié)束后都會統(tǒng)計(jì)投票,超過半數(shù)即可當(dāng)選。

(5)改變服務(wù)器的狀態(tài),宣布當(dāng)選。

話不多說先來一張圖:

用大白話給你解釋Zookeeper的選舉機(jī)制
運(yùn)行器 Leader 故障后選舉流程

(1)第一次投票,每臺機(jī)器都會將票投給自己。

(2)接著每臺機(jī)器都會將自己的投票發(fā)給其他機(jī)器,如果發(fā)現(xiàn)其他機(jī)器的zxid比自己大,那么就需要改投票重新投一次。比如server1 收到了三張票,發(fā)現(xiàn)server2的xzid為102,pk一下發(fā)現(xiàn)自己輸了,后面果斷改投票選server2為老大。

選舉機(jī)制中涉及到的核心概念

敲黑板了,這些概念是面試必考的。

(1)Server id(或sid):服務(wù)器ID

比如有三臺服務(wù)器,編號分別是1,2,3。編號越大在選擇算法中的權(quán)重越大,比如初始化啟動時(shí)就是根據(jù)服務(wù)器ID進(jìn)行比較。

(2)Zxid:事務(wù)ID

服務(wù)器中存放的數(shù)據(jù)的事務(wù)ID,值越大說明數(shù)據(jù)越新,在選舉算法中數(shù)據(jù)越新權(quán)重越大。

(3)Epoch:邏輯時(shí)鐘

也叫投票的次數(shù),同一輪投票過程中的邏輯時(shí)鐘值是相同的,每投完一次票這個數(shù)據(jù)就會增加。

(4)Server狀態(tài):選舉狀態(tài)

LOOKING,競選狀態(tài)。

FOLLOWING,隨從狀態(tài),同步leader狀態(tài),參與投票。

OBSERVING,觀察狀態(tài),同步leader狀態(tài),不參與投票。

LEADING,領(lǐng)導(dǎo)者狀態(tài)。

總結(jié)

(1)Zookeeper 選舉會發(fā)生在服務(wù)器初始狀態(tài)和運(yùn)行狀態(tài)下。

(2)初始狀態(tài)下會根據(jù)服務(wù)器sid的編號對比,編號越大權(quán)值越大,投票過半數(shù)即可選出Leader。

(3)Leader 故障會觸發(fā)新一輪選舉,zxid 代表數(shù)據(jù)越新,權(quán)值也就越大。

(4)在運(yùn)行期選舉還可能會遇到腦裂的情況,大家可以自行學(xué)習(xí)。

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

用大白話給你解釋Zookeeper的選舉機(jī)制

用大白話給你解釋Zookeeper的選舉機(jī)制

用大白話給你解釋Zookeeper的選舉機(jī)制

長按訂閱更多精彩▼

用大白話給你解釋Zookeeper的選舉機(jī)制

如有收獲,點(diǎn)個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉