您好,登錄后才能下訂單哦!
ZooKeeper服務(wù)有兩種不同的運(yùn)行模式。獨(dú)立模式(standalone mode)和復(fù)制模式(replicated mode).
獨(dú)立模式:簡單,適合于測試環(huán)境,不能保證高可用性和恢復(fù)性。
復(fù)制模式:適合生產(chǎn)環(huán)境,運(yùn)行于一個計(jì)算機(jī)集群上,通過復(fù)制來實(shí)現(xiàn)高可用性,只要集合體中半數(shù)以上的機(jī)器處于可用狀態(tài),它就能提供服務(wù)。因此集合體通常包含奇數(shù)臺機(jī)器。
ZooKeeper概念:它所做的就是確保對znode樹的每個修改都會被復(fù)制到集合體中超過半數(shù)的機(jī)器上。如果少于半數(shù)的機(jī)器出現(xiàn)故障,則最少有一臺機(jī)器保存最新的狀態(tài),其余的副本最終也會更新到這個狀態(tài)。
ZooKeeper使用了Zab協(xié)議,該協(xié)議包括兩個無限重復(fù)的階段:
階段1:領(lǐng)導(dǎo)選舉
集合體中的所有機(jī)器通過一個選擇過程來選出一臺被稱為“領(lǐng)導(dǎo)者”(leader)的機(jī)器,其他的機(jī)器被稱為“跟隨者”(follower)。一旦半數(shù)以上(或指定數(shù)量)的跟隨者已經(jīng)將其狀態(tài)與領(lǐng)導(dǎo)者同步,則表明這個階段已經(jīng)完成。
階段2:原子廣播
所有的寫請求都被轉(zhuǎn)發(fā)給領(lǐng)導(dǎo)者,再由領(lǐng)導(dǎo)者將更新廣播給跟隨者。當(dāng)半數(shù)以上的跟隨者都已經(jīng)將修改持久化以后,領(lǐng)導(dǎo)者才會提交這個更新,然后客戶端才會收到一個更新成功的響應(yīng)。這個用來達(dá)成共識的協(xié)議被設(shè)計(jì)成具有原子性,因此每個修改要么成功要么失敗。這類似于數(shù)據(jù)庫的兩階段提交協(xié)議。
當(dāng)領(lǐng)導(dǎo)者出現(xiàn)故障,其余的機(jī)器會選出另外一個領(lǐng)導(dǎo)者,并和新的領(lǐng)導(dǎo)者一起繼續(xù)提供服務(wù)。隨后,如果之前的領(lǐng)導(dǎo)者恢復(fù)正常,便成為一個跟隨者。領(lǐng)導(dǎo)者選舉的過程是非常快的,大約200毫米,因此在選舉的過程中不會出現(xiàn)明顯的性能降低。
在更新內(nèi)存中znode樹之前,集合體中的所有機(jī)器都會先將更新寫入磁盤。任何一臺機(jī)器都可以為讀請求提供服務(wù),并且由于讀請求只涉及內(nèi)存檢索,因此非常快。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。