




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Zookeeper------------------------------------設(shè)計(jì)目標(biāo):將那些復(fù)雜且容易出錯(cuò)的分布式一致性服務(wù)封裝起來(lái),構(gòu)成一個(gè)高效可靠的原語(yǔ)集,并以一系列簡(jiǎn)單易用的接口提供給用戶(hù)使用。組成Zookeeper集群的每臺(tái)機(jī)器都會(huì)在內(nèi)存中維護(hù)當(dāng)前的服務(wù)器狀態(tài),并且每臺(tái)機(jī)器之間都互相保持著通信,只要集群中超過(guò)一半的機(jī)器能夠正常工作,那么整個(gè)集群就能夠正常對(duì)外服務(wù)。對(duì)于來(lái)自客戶(hù)端的每個(gè)更新請(qǐng)求,Zookeeper都會(huì)分配一個(gè)全局唯一的遞增編號(hào),反應(yīng)了所有事務(wù)操作的先后順序。Zookeeper將全量數(shù)據(jù)存儲(chǔ)在內(nèi)存中,并直接服務(wù)于客戶(hù)端的所有非事務(wù)請(qǐng)求,因此尤其適用于以讀操作為主的應(yīng)用場(chǎng)景?;靖拍?--------------集群角色:Leader、Follower、Observer三種角色。集群中的所有主機(jī)通過(guò)Leader選舉過(guò)程來(lái)選定一臺(tái)被稱(chēng)為“Leader”的機(jī)器->為客戶(hù)端提供讀和寫(xiě)的服務(wù)。Follower和Observer都能夠提供讀服務(wù),唯一的區(qū)別在于:Observer不參與Leader選舉過(guò)程,也不參與寫(xiě)操作的“過(guò)半寫(xiě)成功”策略。->Observer可以在不影響集群寫(xiě)性能的情況下提升集群的讀性能。會(huì)話(huà)Session:一個(gè)客戶(hù)端連接是指客戶(hù)端和服務(wù)器之間的一個(gè)TCP長(zhǎng)連接,對(duì)外服務(wù)的端口默認(rèn)是2181,客戶(hù)端啟動(dòng)的時(shí)候,會(huì)與服務(wù)器建立一個(gè)TCP連接。如果中途因?yàn)榫W(wǎng)路故障或客戶(hù)端主動(dòng)斷開(kāi)等,只要在sessionTimeout規(guī)定的時(shí)間內(nèi)能夠重新連接上,之前創(chuàng)建的會(huì)話(huà)仍然有效。數(shù)據(jù)節(jié)點(diǎn)Znode:數(shù)據(jù)模型中的數(shù)據(jù)單元,Zookeeper將所有數(shù)據(jù)存儲(chǔ)在內(nèi)存中,數(shù)據(jù)模型是一棵樹(shù)ZnodeTree,由斜杠/分開(kāi)的路徑如/foo/path1,就是一個(gè)Znode。每個(gè)Znode上都會(huì)保存自己的數(shù)據(jù)內(nèi)容,同時(shí)還會(huì)保存一些列屬性信息。分為持久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn)。持久節(jié)點(diǎn)->一旦這個(gè)Znode被創(chuàng)建了,除非主動(dòng)移除,否則一直在。臨時(shí)節(jié)點(diǎn)的生命周期和客戶(hù)端會(huì)話(huà)綁定。Watcher:允許用戶(hù)在指定節(jié)點(diǎn)上創(chuàng)建Watcher,并且在一些特定事件觸發(fā)的時(shí)候,Zookeeper服務(wù)端會(huì)將事件通知到感興趣的客戶(hù)端上去。ACL:AccessControlLists權(quán)限控制定義了五種權(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)限D(zhuǎn)ELETE:刪除子節(jié)點(diǎn)的權(quán)限ADMIN:設(shè)置節(jié)點(diǎn)的ACL的權(quán)限Leader功能:恢復(fù)數(shù)據(jù)維持與Participant的心跳,接收Participant請(qǐng)求并根據(jù)請(qǐng)求類(lèi)型進(jìn)行不同的處理。Participant消息類(lèi)型:ping消息->Leader的心跳信息REQUEST消息->Participant發(fā)送的提議消息,包括寫(xiě)請(qǐng)求和同步請(qǐng)求ACK消息->是Participant對(duì)提議的回復(fù),超過(guò)半數(shù),則Commit該提議REVALIDATE消息->用來(lái)延長(zhǎng)Session有效時(shí)間Participant的四個(gè)功能:向Leader發(fā)送請(qǐng)求(以上四種請(qǐng)求)接收Leader消息并進(jìn)行處理接收Client的請(qǐng)求,如果是寫(xiě)請(qǐng)求,發(fā)送給Leader進(jìn)行投票返回Client結(jié)果ZAB-------------------------------并沒(méi)有完全采用Paxos算法,而是使用了ZookeeperAtomicBroadst(ZAB,Zookeeper原子消息廣播協(xié)議)作為數(shù)據(jù)一致性的核心算法。主備模式來(lái)保持集群中各副本之前數(shù)據(jù)的一致性–>使用一個(gè)單一的主進(jìn)程來(lái)接受并處理客戶(hù)端的所有事務(wù)請(qǐng)求,并采用ZAB的原子廣播協(xié)議,將服務(wù)器數(shù)據(jù)的狀態(tài)并更以Proposal的形式廣播到所有的副本進(jìn)程上去。=>同一時(shí)刻集群中只能夠有一個(gè)主進(jìn)程來(lái)廣播服務(wù)器的進(jìn)程變更,因此能夠處理客戶(hù)端大量的并發(fā)請(qǐng)求。ZAB協(xié)議的核心是定義了那些會(huì)改變Zookeeper服務(wù)器數(shù)據(jù)狀態(tài)的事務(wù)請(qǐng)求的處理方式,即:所有事務(wù)請(qǐng)求都會(huì)由一個(gè)全局唯一的服務(wù)器來(lái)協(xié)調(diào)處理,也就是Leader,而余下的服務(wù)器則成為Follower;Leader負(fù)責(zé)將一個(gè)客戶(hù)端事務(wù)請(qǐng)求轉(zhuǎn)換成一個(gè)Proposal,并將該P(yáng)roposal分發(fā)給集群下所有的Follower,之后就是等待Follower的反饋,一旦超過(guò)半數(shù)進(jìn)行了正確的反饋,那么Leader就會(huì)再次向所有的Follower服務(wù)器分發(fā)Commit消息,要求其將前一個(gè)Proposal進(jìn)行提交。兩種基本模式:崩潰恢復(fù)模式和消息廣播模式。服務(wù)框架啟動(dòng)或Leader出現(xiàn)網(wǎng)絡(luò)故障、重啟等異常時(shí),ZAB協(xié)議就會(huì)進(jìn)入恢復(fù)模式并選舉產(chǎn)生新的Leader,當(dāng)產(chǎn)生新的Leader且集群中過(guò)半的機(jī)器與該Leader服務(wù)器完成狀態(tài)同步之后,就會(huì)推出恢復(fù)模式。->進(jìn)入消息廣播模式:一個(gè)Leader負(fù)責(zé)消息廣播,如果此時(shí)一臺(tái)機(jī)器加入到集群中,就會(huì)默默的進(jìn)入數(shù)據(jù)恢復(fù)模式:找到Leader所在的服務(wù)器,并進(jìn)行數(shù)據(jù)同步,然后一起參與到消息廣播中。類(lèi)比2PC,ZAB協(xié)議的二階段提交,移除了中斷邏輯,所有的Follower要么正常反饋Leader提出的事務(wù)Proposal,要么就拋棄Leader服務(wù)器。移除終端邏輯也意味著Leader獲取到過(guò)半的Ack之后就開(kāi)始Proposal,不需要等到所有的Follower服務(wù)器響應(yīng)。消息廣播:Leader會(huì)為每一個(gè)Follower分配一個(gè)單獨(dú)的隊(duì)列,然后將需要廣播的事務(wù)Proposal依次放入到這些隊(duì)列中去,并且根據(jù)FIFO策略進(jìn)行發(fā)送。每一個(gè)Follower接受這個(gè)事務(wù)Proposal后,都會(huì)將其以事務(wù)日志的形式寫(xiě)入到本地磁盤(pán)中去,并且在成功寫(xiě)入后反饋給Leader服務(wù)器一個(gè)Ack響應(yīng),超過(guò)半數(shù)后,Leader就會(huì)廣播一個(gè)Commit消息。同時(shí)Leader自己也會(huì)完成對(duì)事務(wù)的提交,每一個(gè)Follower在接收到Commit消息后,也會(huì)完成對(duì)事務(wù)的提交。基本特性:ZAB協(xié)議規(guī)定:如果一個(gè)事務(wù)Proposal在一臺(tái)機(jī)器上執(zhí)行成功,那應(yīng)該在所有機(jī)器上都執(zhí)行成功,哪怕機(jī)器出現(xiàn)故障。ZXID:ZAB協(xié)議的事務(wù)編號(hào)是一個(gè)64位的數(shù)字,其中低32位是單調(diào)遞增的計(jì)數(shù)器,針對(duì)客戶(hù)端的每一個(gè)事務(wù)請(qǐng)求,Leader服務(wù)器在產(chǎn)生一個(gè)新的事務(wù)Proposal的時(shí)候,都會(huì)對(duì)該計(jì)數(shù)器+1;高32位則代表了Leader周期epoch的編號(hào);每當(dāng)選舉產(chǎn)生一個(gè)新的Leader時(shí),就會(huì)從這個(gè)Leader服務(wù)器取出其本地日志最大事務(wù)Proposal的ZXID,并從該ZXID解析出最大的epoch值,然后再對(duì)其進(jìn)行+1,以此編號(hào)作為新的epoch,并將低32位置0來(lái)開(kāi)始新的ZXID,同步:選擇完leader之后,開(kāi)始數(shù)據(jù)同步:Leader等待server連接Participant連接leader,將最大的ZXID發(fā)送給leaderLeader根據(jù)ZXID確定同步點(diǎn)并進(jìn)行同步,同步完成后,通知Participant進(jìn)入uptodate狀態(tài);Participant收到uptodate消息后,就可以開(kāi)始接受client的請(qǐng)求。進(jìn)程的狀態(tài):Leading、Following、Looking進(jìn)程啟動(dòng)時(shí)或Leader崩潰時(shí)->Looking選舉出Leader之后,F(xiàn)ollower的狀態(tài)為Following,Leader的狀態(tài)為L(zhǎng)eading。所有節(jié)點(diǎn)約定在父目錄GroupMembers下創(chuàng)建臨時(shí)節(jié)點(diǎn),然后監(jiān)聽(tīng)父目錄節(jié)點(diǎn)的子節(jié)點(diǎn)變化消息,一旦有機(jī)器掛掉,該機(jī)器與zk的連接斷開(kāi),其創(chuàng)建的臨時(shí)目錄節(jié)點(diǎn)被刪除,所有其他機(jī)器都收到通知;對(duì)于選master,所有機(jī)器創(chuàng)建臨時(shí)順序編號(hào)目錄節(jié)點(diǎn),每次選取編號(hào)最小的機(jī)器作為master即可。--------------------------------------------------------------------------------------------------------------------------VS–Zookeeper配置文件位置:/sf/cfg/vs/zookeeper_conf/zoo.cfg集群中所有機(jī)器上的zoo.cfg文件的內(nèi)容都應(yīng)該是一致的。dataDir目錄下有myid文件,myid文件中只有一個(gè)數(shù)字,即一個(gè)ServerID;每個(gè)機(jī)器的myid文件內(nèi)的數(shù)字不同。驗(yàn)證服務(wù)器:zkCli.sh使用------------------------------------------配置文件先更新到本地,然后同步到zkzk目錄結(jié)構(gòu):見(jiàn)Xmind文件測(cè)試點(diǎn):(大集群上)-------------------------------1.基本功能測(cè)試-集群只有一個(gè)leader
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧課堂省級(jí)課題申報(bào)書(shū)
- 數(shù)字孿生課題申報(bào)書(shū)
- 課題立項(xiàng)申報(bào)書(shū)幼兒園
- 孔子學(xué)堂課題申報(bào)書(shū)
- 兵團(tuán)課題申報(bào)書(shū)
- 經(jīng)濟(jì)類(lèi)課題申報(bào)書(shū)范例
- 城市更新課題申報(bào)書(shū)范本
- 醫(yī)院消防勞務(wù)合同范本
- 課題申報(bào)書(shū)是啥
- 教育科研方法課題申報(bào)書(shū)
- 高中英語(yǔ)丨高考核心高頻詞匯
- 《營(yíng)養(yǎng)均衡膳食指南》課件
- 《數(shù)智化技術(shù)應(yīng)用與創(chuàng)新》課件 第1章 走進(jìn)數(shù)智化時(shí)代
- 2025年浙江省臺(tái)州機(jī)場(chǎng)管理有限公司招聘筆試參考題庫(kù)含答案解析
- 《智能家居系統(tǒng)》課件
- 基礎(chǔ)模塊下冊(cè)《中國(guó)人民站起來(lái)了》2
- 繼電保護(hù)業(yè)務(wù)技能實(shí)操題庫(kù)
- 員工請(qǐng)假管理制度-員工請(qǐng)假管理制度范文
- 第2章 土中應(yīng)力
- (完整版)冠詞練習(xí)題及答案解析
- 約束管理制度
評(píng)論
0/150
提交評(píng)論