真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Zookeeper詳解(一):分布式與Zookeeper

分布式

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括烏審網(wǎng)站建設(shè)、烏審網(wǎng)站制作、烏審網(wǎng)頁(yè)制作以及烏審網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,烏審網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到烏審省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

在分布式框架中,分布式應(yīng)用面臨的最大的問(wèn)題就是數(shù)據(jù)一致性。那么Zookeeper就是一個(gè)比較好的解決方案。在分布式框架中起到協(xié)調(diào)作用。

什么是Zookeeper

zookeeper是高性能的分布式協(xié)作服務(wù)和分布式數(shù)據(jù)一致性解決方案,由雅虎創(chuàng)建,是Goole Chubby的開(kāi)源實(shí)現(xiàn),所以你就自然明白Zookeeper和Chubby的關(guān)系了。Chubby是一個(gè)分布式鎖服務(wù),GFS和Big Table都是用它來(lái)解決分布式協(xié)作的一些問(wèn)題,其底層一致性實(shí)現(xiàn)就是以Paxos算法為基礎(chǔ)的。

zookeeper可以保證分布式一致性特性,包括順序一致性、原子性、單一視圖(無(wú)論客戶(hù)端連接哪一個(gè)ZK服務(wù)器看到的都是一樣的數(shù)據(jù)模型)、可靠性、實(shí)時(shí)性(在一定時(shí)間內(nèi)客戶(hù)端可以讀取到最新數(shù)據(jù)狀態(tài)而不是提交后所有服務(wù)器馬上就全部更新。)

zookeeper的數(shù)據(jù)模型是一個(gè)樹(shù)形節(jié)點(diǎn),服務(wù)啟動(dòng)后,所有數(shù)據(jù)加載到內(nèi)存中這樣來(lái)提高服務(wù)器吞吐并減少延遲。


Zookeeper的基本概念

集群角色:

  • Leader:ZK集群的核心角色,通過(guò)選舉產(chǎn)生,為客戶(hù)端提供讀寫(xiě)服務(wù),也就是處理事務(wù)請(qǐng)求

  • Follower:集群狀態(tài)的跟隨者,參加選舉,沒(méi)有被選上就是這個(gè)角色,提供讀取服務(wù),也就是處理非事務(wù)請(qǐng)求,對(duì)于收到的事務(wù)請(qǐng)求會(huì)轉(zhuǎn)發(fā)給Leader服務(wù)器

  • Observer:觀察者角色,不參加選舉,但是提供數(shù)據(jù)讀取服務(wù),提供讀取服務(wù),也就是處理非事務(wù)請(qǐng)求,對(duì)于收到的事務(wù)請(qǐng)求會(huì)轉(zhuǎn)發(fā)給Leader服務(wù)器

會(huì)話(huà):

客戶(hù)端和ZK的連接,客戶(hù)端與ZK連接一個(gè)TCP的長(zhǎng)連接來(lái)維持會(huì)話(huà),通過(guò)這個(gè)連接可以檢測(cè)心跳與服務(wù)器保存會(huì)話(huà),也可以發(fā)送請(qǐng)求并接受服務(wù)器響應(yīng),也可以接受WATCH事件。

數(shù)據(jù)節(jié)點(diǎn):

節(jié)點(diǎn)有兩類(lèi)

  • 集群中的一臺(tái)機(jī)器就叫做一個(gè)節(jié)點(diǎn)

  • 還有就是樹(shù)形數(shù)據(jù)單元中的Znode也叫一個(gè)節(jié)點(diǎn),有持久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn)

版本:

ZK的版本和我們常規(guī)理解的版本不太一樣,它是記錄節(jié)點(diǎn)數(shù)據(jù)或者節(jié)點(diǎn)子節(jié)點(diǎn)的類(lèi)別或者ACL的修改次數(shù)。有一個(gè)叫做STAT的數(shù)據(jù)結(jié)構(gòu)這里面就記錄了下面的版本信息。

  • version:當(dāng)前數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)內(nèi)容的版本號(hào)

  • cversion:當(dāng)前數(shù)據(jù)節(jié)點(diǎn)子節(jié)點(diǎn)的版本號(hào)

  • aversion:當(dāng)前數(shù)據(jù)節(jié)點(diǎn)ACL變更版本號(hào)


可以利用這個(gè)版本實(shí)現(xiàn)分布式的鎖服務(wù)

悲觀鎖:悲觀并發(fā)鎖,也叫做排他鎖,避免不同事務(wù)對(duì)對(duì)同一數(shù)據(jù)并發(fā)更新操作數(shù)據(jù)不一致

樂(lè)觀鎖:認(rèn)為不同事務(wù)訪問(wèn)相同數(shù)據(jù)很少出現(xiàn)相互干擾的情況,所以不需要做嚴(yán)格的并發(fā)控制,但是它也是鎖。比如對(duì)每個(gè)數(shù)據(jù)庫(kù)表增加一個(gè)版本號(hào),修改數(shù)據(jù)之前讀取數(shù)據(jù)自然也會(huì)把版本號(hào)讀取出來(lái),更新的時(shí)候就使用這個(gè)版本號(hào),如果版本號(hào)為1,更新的時(shí)候就使用1,如果更新失敗則表示其他事物已經(jīng)對(duì)數(shù)據(jù)做了修改,這時(shí)候就需要其他后續(xù)處理。


watcher:

ZK允許用戶(hù)在節(jié)點(diǎn)上注冊(cè)watcher,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),ZK會(huì)把這個(gè)變化通知發(fā)送給客戶(hù)端。


ACL權(quán)限控制:

可以對(duì)節(jié)點(diǎn)設(shè)置權(quán)限控制

  • CREATE:創(chuàng)建子節(jié)點(diǎn)的讀權(quán)限

  • READ:獲取節(jié)點(diǎn)數(shù)據(jù)和子節(jié)點(diǎn)列表的權(quán)限

  • WRITE:更新節(jié)點(diǎn)數(shù)據(jù)的權(quán)限

  • DELET:刪除子節(jié)點(diǎn)的權(quán)限

  • ADMIN:設(shè)置節(jié)點(diǎn)ACL的權(quán)限

ZAB協(xié)議

zookeeper是基于PAXOS算法,但是它自己也有一套核心算法就是ZAB,原子消息廣播協(xié)議。這個(gè)協(xié)議是為Zookeeper單獨(dú)設(shè)計(jì)的,是崩潰可恢復(fù)的的原子消息廣播算法。

Zookeeper使用一個(gè)單一的主進(jìn)程來(lái)接收并處理客戶(hù)端所有請(qǐng)求,將服務(wù)器的狀態(tài)以事務(wù)的形式廣播到所有副本進(jìn)程中。


ZAB協(xié)議包括兩種基本模式,崩潰恢復(fù)和消息廣播。

集群?jiǎn)?dòng)過(guò)程中,Leader斷開(kāi)、崩潰退出或重啟等異常情況,ZAB會(huì)進(jìn)入恢復(fù)模式并選舉新的Leader,當(dāng)產(chǎn)生了新的Leader后并集群中過(guò)半腐惡去完成了與Leader的狀態(tài)同步(數(shù)據(jù)同步),那么ZAB協(xié)議退出恢復(fù)模式,進(jìn)入消息廣播模式。

如果在當(dāng)前集群中新加入一臺(tái)服務(wù)器,那么這臺(tái)新服務(wù)器會(huì)自動(dòng)進(jìn)入恢復(fù)模式,待完成與集群Leader的同步之后就進(jìn)入消息廣播模式。


Leader服務(wù)器收到客戶(hù)端的事務(wù)請(qǐng)求會(huì)生成一個(gè)事務(wù)提案并發(fā)起廣播;如果非Leader服務(wù)器收到客戶(hù)端請(qǐng)求后它會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給Leader服務(wù)器。

消息廣播:

在廣播事務(wù)之前Leader服務(wù)器會(huì)先給這個(gè)事務(wù)分配一個(gè)全局單調(diào)遞增的唯一ID,也就是事務(wù)ID(ZXID),每一個(gè)事務(wù)必須按照Z(yǔ)XID的先后順序進(jìn)行處理。而且Leader服務(wù)器會(huì)為每一個(gè)Follower分配一個(gè)單獨(dú)的隊(duì)列,然后將需要廣播的事務(wù)放到隊(duì)列中。每個(gè)Follower服務(wù)器再接收到這個(gè)事務(wù)之后,都會(huì)將其以事務(wù)日志的形式寫(xiě)入到本地磁盤(pán)中,成功寫(xiě)入后反饋給Leader一個(gè)ACK,當(dāng)Leader收到半數(shù)ACK響應(yīng)之后,就會(huì)廣播一個(gè)Commit消息給所有Follower,通知它們進(jìn)行提交,同時(shí)Leader也會(huì)完成自身的提交。


崩潰恢復(fù):

其目的就是保證盡快選舉出一個(gè)新的Leader并通知給其他Follower,同時(shí)保證整個(gè)集群中的數(shù)據(jù)狀態(tài)是一致的。

ZAB協(xié)議丟棄那些只有在Leader服務(wù)器被提出的事務(wù)。


本文名稱(chēng):Zookeeper詳解(一):分布式與Zookeeper
URL分享:http://weahome.cn/article/ihdiih.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部