Hadoop 3大數(shù)據(jù)部署與數(shù)據(jù)分析實(shí)戰(zhàn) 課件項(xiàng)目5 ZKeeper分布式協(xié)調(diào)服務(wù)_第1頁
Hadoop 3大數(shù)據(jù)部署與數(shù)據(jù)分析實(shí)戰(zhàn) 課件項(xiàng)目5 ZKeeper分布式協(xié)調(diào)服務(wù)_第2頁
Hadoop 3大數(shù)據(jù)部署與數(shù)據(jù)分析實(shí)戰(zhàn) 課件項(xiàng)目5 ZKeeper分布式協(xié)調(diào)服務(wù)_第3頁
Hadoop 3大數(shù)據(jù)部署與數(shù)據(jù)分析實(shí)戰(zhàn) 課件項(xiàng)目5 ZKeeper分布式協(xié)調(diào)服務(wù)_第4頁
Hadoop 3大數(shù)據(jù)部署與數(shù)據(jù)分析實(shí)戰(zhàn) 課件項(xiàng)目5 ZKeeper分布式協(xié)調(diào)服務(wù)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

五、Zookeeper分布式協(xié)調(diào)服務(wù)5.1Zookeeper簡(jiǎn)介5.1Zookeeper簡(jiǎn)介HDFS客戶端寫入數(shù)據(jù)圖示NameNode文件命名空間block地址

應(yīng)用(客戶端)DataNodeLinuxDataNodeLinux......1.獲取文件名,Block索引2.返回Block標(biāo)識(shí)和位置│──a│

└──d└──c3.寫入數(shù)據(jù)塊。/a/d4.管理節(jié)點(diǎn)進(jìn)行數(shù)據(jù)水平復(fù)制5.1Zookeeper簡(jiǎn)介思考單一的NameNode

如果掛掉怎么辦?5.1Zookeeper簡(jiǎn)介HAHDFS(HighAvailable高可用)NameNode1DataNodeDataNodeDataNodeNameNode2ActiveLeaderFollowerFollowerZooKeeper集群JournalNodeZKFailoverControllerZKFailoverControllerJournalNodeJournalNodeStandy5.1Zookeeper簡(jiǎn)介HBase的架構(gòu)ClientZooKeeperHMasterRegionRegionServerRegionRegionRegionRegionServerRegionRegionDFSClientDFSClientHDFSHBase讀寫數(shù)據(jù)管理和監(jiān)控RS5.1Zookeeper簡(jiǎn)介ZooKeeper由來Zookeeper最早起源于雅虎研究院的一個(gè)研究小組。在當(dāng)時(shí),研究人員發(fā)現(xiàn),在雅虎內(nèi)部很多大型系統(tǒng)基本都需要依賴一個(gè)系統(tǒng)來進(jìn)行分布式協(xié)調(diào),但是這些系統(tǒng)往往都存在分布式單點(diǎn)問題。所以,雅虎的開發(fā)人員就試圖開發(fā)一個(gè)通用的無單點(diǎn)問題的分布式協(xié)調(diào)框架,以便讓開發(fā)人員將精力集中在處理業(yè)務(wù)邏輯上。5.1Zookeeper簡(jiǎn)介HDFS單點(diǎn)故障NameNodeDataNodeDataNodeDataNode5.1Zookeeper簡(jiǎn)介YARN單點(diǎn)故障ResourceManagerNodeManagerNodeManagerNodeManager還有HBase、Spark、Storm等都有單點(diǎn)故障的問題5.1Zookeeper簡(jiǎn)介Zookeeper簡(jiǎn)介ZooKeeperZookeeper是一個(gè)高可用的分布式數(shù)據(jù)管理和協(xié)調(diào)框架,并且能夠很好的保證分布式環(huán)境中數(shù)據(jù)的一致性。在越來越多的分布式系統(tǒng)(Hadoop、HBase、Kafka)中,Zookeeper都作為核心組件使用。5.1Zookeeper簡(jiǎn)介Hadoop生態(tài)Ambari(安裝部署工具)Zookeeper(分布式協(xié)調(diào)服務(wù))HBase(分布式數(shù)據(jù)庫)HDFS(分布式存儲(chǔ)系統(tǒng))YARN(資源調(diào)度框架)MapReduce(離線計(jì)算)...HivePigMahout...Sqoop(數(shù)據(jù)庫ETL工具)Flume(日志采集)數(shù)據(jù)分析引擎機(jī)器學(xué)習(xí)算法庫數(shù)據(jù)采集引擎五、Zookeeper分布式協(xié)調(diào)服務(wù)5.2Zookeeper基本原理5.2Zookeeper基本原理談一個(gè)達(dá)成一致意見的問題舉例:班級(jí)需要決定召開班會(huì)的時(shí)間5.2Zookeeper基本原理班干部決策原則每個(gè)人都知道其他人的存在每個(gè)人都是平等的少數(shù)服從多數(shù)之前沒有收到提議,那一定要接受提議。先后收到不同提議,接受先收到提議。5.2Zookeeper基本原理具體場(chǎng)景假設(shè)有一個(gè)總數(shù)是5人的班干群,多數(shù)人贊成則達(dá)成一致。

5.2Zookeeper基本原理Quorum['kw?r?m]Thesmallestnumberofpeoplewhomustbeatameetingbeforeitcanbeginordecisionscanbemade.譯:會(huì)議召開或作出決定的最少參與人數(shù)。這里可以理解為少數(shù)服從多數(shù)。5.2Zookeeper基本原理遇到?jīng)_突如何處理同一次提案,接受先收到的提案,拒絕后面收到的提案5.2Zookeeper基本原理分布式一致性經(jīng)典算法PaxosPaxos算法Paxos算法是萊斯利·蘭伯特(LeslieLamport)于1990年提出的一種基于消息傳遞且具有高度容錯(cuò)特性的一致性算法。5.2Zookeeper基本原理Paxos算法編號(hào)0編號(hào)0發(fā)送提案編號(hào)1:電費(fèi)1元/度編號(hào)0編號(hào)01.提案議員查看記事本,按順序提出提案。編號(hào)05.2Zookeeper基本原理Paxos算法編號(hào)0編號(hào)0編號(hào)1接受提案編號(hào)1:電費(fèi)1元/度編號(hào)0編號(hào)1編號(hào)0編號(hào)12.接收提案議員查看記事本,提案編號(hào)大于記事本的最大編號(hào),記錄下提議,并回復(fù)接受提議。編號(hào)0編號(hào)1接受接受接受接受

新增5.2Zookeeper基本原理Paxos算法編號(hào)0編號(hào)1編號(hào)0編號(hào)1編號(hào)1提案生效!編號(hào)0編號(hào)1編號(hào)0編號(hào)13.超過半數(shù)的回復(fù),編號(hào)1提案生效編號(hào)0編號(hào)15.2Zookeeper基本原理Paxos算法系列基于消息傳遞通信模型的分布式系統(tǒng),不可避免的會(huì)發(fā)生以下錯(cuò)誤:進(jìn)程可能會(huì)慢、被殺死或者重啟,消息可能會(huì)延遲、丟失、重復(fù)。Paxos算法解決的問題是在一個(gè)可能發(fā)生上述異常的分布式系統(tǒng)中如何就某個(gè)值達(dá)成一致,保證不論發(fā)生以上任何異常,都不會(huì)破壞決議的一致性。Paxos算法其中的幾個(gè)變種BasicPaxos、Multi–Paxos和Fast-Paxos等。5.2Zookeeper基本原理BasicPaxos算法角色每個(gè)成員(節(jié)點(diǎn))都可以在以下三種角色直接切換,也可以兼任多種角色。Proposer:提出提案(Proposal)。Proposal信息包括提案編號(hào)(ProposalID)和提議的值(Value)。Acceptor:參與決策,回應(yīng)Proposers的提案。收到Proposal后可以接受提案,若Proposal獲得多數(shù)Acceptors的接受,則稱該P(yáng)roposal被批準(zhǔn)。Learner:不參與決策,從Proposers/Acceptors學(xué)習(xí)最新達(dá)成一致的提案(Value)。5.2Zookeeper基本原理BasicPaxos算法步驟1.Prepare階段:proposer選擇一個(gè)提案編號(hào)n并將prepare請(qǐng)求發(fā)送給acceptors中的一個(gè)多數(shù)派;acceptor收到prepare消息后,如果提案的編號(hào)大于它已經(jīng)回復(fù)的所有prepare消息(回復(fù)消息表示接受accept),則acceptor將自己上次接受的提案回復(fù)給proposer,并承諾不再回復(fù)小于n的提案;2.Accept階段:當(dāng)一個(gè)proposer收到了多數(shù)acceptors對(duì)prepare的回復(fù)后,就進(jìn)入Accept階段。它要向回復(fù)prepare請(qǐng)求的acceptors發(fā)送accept請(qǐng)求,包括編號(hào)n和根據(jù)P2c決定的value(如果根據(jù)P2c沒有已經(jīng)接受的value,那么它可以自由決定value)。在不違背自己向其他proposer的承諾的前提下,acceptor收到accept請(qǐng)求后即批準(zhǔn)這個(gè)請(qǐng)求。5.2Zookeeper基本原理BasicPaxos算法圖示ClientProposer(P)Acceptor(A)Learner(L)|||||||---達(dá)成一致的步驟---X------->||||||(1)Request:客戶端請(qǐng)求提議值X|X------->|->|->|||(2)Prepare:P給A發(fā)送提議||<-------X--X--X||(3)Promise:A分別回復(fù)P接受提議|X------->|->|->|||(4)Accept:P要求多數(shù)A接受提議||<-------X--X--X------>|->|(5)Accepted:多數(shù)A接受,廣播給L|<------------------------------X--X(6)Response:回復(fù)客戶端達(dá)成一致|||||||5.2Zookeeper基本原理BasicPaxos算法存在的問題活鎖問題2階段提交效率問題5.2Zookeeper基本原理BasicPaxos算法——活鎖問題ProposerABProposerProposerABProposer編號(hào)(1)提案!編號(hào)(2)提案!編號(hào)(3)提案!編號(hào)(4)提案!-----------準(zhǔn)備Accept----------------------準(zhǔn)備Accept----------------------準(zhǔn)備Accept-----------一直處在爭(zhēng)奪當(dāng)中...無法達(dá)成一致5.2Zookeeper基本原理BasicPaxos算法——活鎖問題新輪次的搶占會(huì)使舊輪次停止運(yùn)行,如果每一輪在第2階段執(zhí)行成功之前都被新一輪搶占,則導(dǎo)致活鎖。這個(gè)問題在實(shí)際應(yīng)用會(huì)發(fā)生地比較少,一般可通過隨機(jī)改變ProposalID的增長(zhǎng)幅度或者增加Proposer發(fā)送新一輪提案的間隔來解決。5.2Zookeeper基本原理BasicPaxos算法——二階段提交問題在分布式的系統(tǒng)之間,由于節(jié)點(diǎn)之間由網(wǎng)絡(luò)連接,當(dāng)節(jié)點(diǎn)數(shù)增多的時(shí)候,BasicPaxos的兩階段提交會(huì)導(dǎo)致網(wǎng)絡(luò)傳輸產(chǎn)生大量開銷,降低了效率。5.2Zookeeper基本原理Multi-Paxos算法新增Leader角色,每次只能由Leader提出提案。先使用BasicPaxos算法選出Leader。選出Leader以后,Leader的提案直接進(jìn)入Accept階段,不用經(jīng)過Prepare階段。5.2Zookeeper基本原理Multi-Paxos算法——選LeaderClientProposer(P)Acceptor(A)Learner(L)|||||||---第1次LeaderElect(選舉)---X------->||||||(1)Request:客戶端請(qǐng)求提議值X|X------->|->|->|||(2)Prepare:P要當(dāng)Leader||<-------X--X--X||(3)Promise:A同意|X------->|->|->|||(4)Accept:P要求多數(shù)A接受提議||<-------X--X--X------>|->|(5)Accepted:多數(shù)A接受,廣播給L|<------------------------------X--X(6)Response:回復(fù)客戶端達(dá)成一致|||||||5.2Zookeeper基本原理Multi-Paxos算法——選LeaderClientLeader(LD)Acceptor(A)Learner(L)|||||||---第1次以后Leader提出議案---X------->||||||(1)Request:客戶端請(qǐng)求提議值X|X------->|->|->|||(2)Accept:LD要求多數(shù)A接受提議||<-------X--X--X------>|->|(3)Accepted:多數(shù)A接受,廣播給L|<------------------------------X--X(4)Response:回復(fù)客戶端達(dá)成一致|||||||5.2Zookeeper基本原理Zab算法ZooKeeper采用Zab(ZooKeeperatomicbroadcastprotocol,ZooKeeper原子消息廣播協(xié)議)來實(shí)現(xiàn)消息傳輸?shù)囊恢滦?。Zab是Paxos算法的一個(gè)變種。5.2Zookeeper基本原理Zab算法選舉某小島國5個(gè)人相繼加入總統(tǒng)選舉,只能選1人。大家約定選舉規(guī)則:1人1票,過半得票當(dāng)選,投票結(jié)果對(duì)所有人公開。每個(gè)人都是自私的先投給自己??凑l記載的島國歷史是最新,就選誰。如果一樣編號(hào)最大的。允許多輪投票,直到有人得票數(shù)過半當(dāng)選。5.2Zookeeper基本原理Zab算法選舉1號(hào)-20012號(hào)-20213號(hào)-20214號(hào)-20105號(hào)-20101號(hào)2號(hào)3號(hào)4號(hào)5號(hào)第1輪11第2輪02第3輪111第4輪003第5輪0031第6輪0040第7輪00401第8輪005005.2Zookeeper基本原理Zab算法——讀數(shù)據(jù)的場(chǎng)景民眾編號(hào)2議員電費(fèi)多少錢一度?查最新的電費(fèi)標(biāo)準(zhǔn)電費(fèi)1元/度,可能不是最新的民眾編號(hào)1議員總統(tǒng)查詢...編號(hào)1議員電費(fèi)1.5元/度5.2Zookeeper基本原理Zab算法實(shí)例ZooKeeper小島ZookeeperServerCluster(集群)議員ZookeeperServer(節(jié)點(diǎn))提議ZNodeChange提議編號(hào)Zxid(ZooKeeperTransactionId)5.2Zookeeper基本原理Zab算法實(shí)例ZooKeeper總統(tǒng)Leader議員Follower民眾Client5.2Zookeeper基本原理Zab算法——讀數(shù)據(jù)的場(chǎng)景Client編號(hào)2Follower電費(fèi)多少錢一度?查最新的電費(fèi)標(biāo)準(zhǔn)電費(fèi)1元/度,可能不是最新的Client編號(hào)1FollowerLeader查詢...編號(hào)1Follower電費(fèi)1.5元/度(民眾)(議員)(總統(tǒng))5.2Zookeeper基本原理Zab算法——寫數(shù)據(jù)的場(chǎng)景普通民眾乙到某個(gè)議員S2那里反映電費(fèi)太貴,能否分時(shí)段收費(fèi)。議員S2讓他在辦公室等著,自己將問題反映給了總統(tǒng)??偨y(tǒng)詢問所有議員的意見,多數(shù)議員表示支持分時(shí)段收費(fèi),白天0.9元/度,晚上1元/度。于是總統(tǒng)發(fā)表聲明。普通民眾乙拿到最新決議。5.2Zookeeper基本原理Zab算法——寫數(shù)據(jù)的場(chǎng)景Client編號(hào)1Follower1.要求分時(shí)段收電費(fèi)編號(hào)1FollowerLeader2.請(qǐng)求發(fā)送給總統(tǒng)編號(hào)1Follower4.所有議員更新電費(fèi)分時(shí)段收費(fèi)方案3.議員投票決定5.2Zookeeper基本原理Zab算法——“總統(tǒng)”離開場(chǎng)景因?yàn)槟承┣闆r,“總統(tǒng)”缺失,議員各自發(fā)表聲明,推選新的“總統(tǒng)”?!翱偨y(tǒng)”大選期間政府停業(yè),拒絕普通民眾的請(qǐng)求。5.2Zookeeper基本原理Zab算法總結(jié)最新的數(shù)據(jù)找總統(tǒng)(Leader)同步(Sync)就對(duì)了寫數(shù)據(jù)一定要通過總統(tǒng)(Leader)總統(tǒng)離開,先要選總統(tǒng)(Election)再提供服務(wù)5.2Zookeeper基本原理Zab與BasicPaxos區(qū)別BasicPaxosZab角色每個(gè)平等Leader:保存最新數(shù)據(jù),發(fā)起投票。Follower:參與選舉。Observer:不參與Leader選舉,致力于提高讀性能寫順序只能保證一致性,不能保證寫入順序。保證事務(wù)按順序執(zhí)行5.2Zookeeper基本原理ZooKeeper架構(gòu)FollowerLeaderFollowerClientClientClientClientLeader:負(fù)責(zé)進(jìn)行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài);Follower:接收客戶端請(qǐng)求并向客戶端返回結(jié)果,在選取過程中參與投票;Client:請(qǐng)求發(fā)起方。五、Zookeeper分布式協(xié)調(diào)服務(wù)5.3掌握Zookeeper集群模式部署5.3掌握Zookeeper集群模式部署ZooKeeper安裝方式獨(dú)立模式(單機(jī)模式):只用于調(diào)試或?qū)嶒?yàn),只在一個(gè)節(jié)點(diǎn)上面運(yùn)行。集群模式:需要在多臺(tái)服務(wù)器部署。5.3掌握Zookeeper集群模式部署端口說明2181:對(duì)Client端提供服務(wù)3888:選舉Leader使用(每個(gè)Zookeeper都監(jiān)聽此端口)2888:集群內(nèi)機(jī)器通訊使用(只有Leader監(jiān)聽此端口)5.3掌握Zookeeper集群模式部署配置項(xiàng)說明tickTime:Client與Server通信心跳時(shí)間initLimit:Leader與Follower初始通信時(shí)限syncLimit:Leader與Follower同步通信時(shí)限5.3掌握Zookeeper集群模式部署Zookeeper數(shù)據(jù)模型(1)樹形層次結(jié)構(gòu)ZooKeeper維護(hù)著一個(gè)樹形層次結(jié)構(gòu),樹中節(jié)點(diǎn)稱為znode每個(gè)ZNode上都會(huì)保存自己的數(shù)據(jù)內(nèi)容,同時(shí)會(huì)保存一系列屬性信息。znode數(shù)據(jù)不超1MB每個(gè)Znode其有一個(gè)唯一的路徑標(biāo)識(shí);通過工具ZooInspector可以查看5.3掌握Zookeeper集群模式部署Zookeeper數(shù)據(jù)模型5.3掌握Zookeeper集群模式部署Zookeeper數(shù)據(jù)模型(2)節(jié)點(diǎn)屬性cZxid=0x1b00133dc0

//節(jié)點(diǎn)創(chuàng)建時(shí)的事務(wù)IDctime=TueJan0315:44:42CST2017

//節(jié)點(diǎn)創(chuàng)建的時(shí)間mZxid=0x1d00000063

//節(jié)點(diǎn)最近更新時(shí)的事務(wù)IDmtime=FriJan0608:44:25CST2017

//節(jié)點(diǎn)最近更新的時(shí)間pZxid=0x1b00133dc0

//該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最后一次被修改時(shí)的事務(wù)ID。注意,只有子節(jié)點(diǎn)列表變更了才會(huì)變更pZxid,子節(jié)點(diǎn)內(nèi)容變更不會(huì)影響pZxid。5.3掌握Zookeeper集群模式部署Zookeeper數(shù)據(jù)模型(2)節(jié)點(diǎn)屬性cversion=0

//子節(jié)點(diǎn)的版本號(hào)dataVersion=11

//數(shù)據(jù)節(jié)點(diǎn)的版本號(hào)aclVersion=0

//ACL版本號(hào)ephemeralOwner=0x0

//創(chuàng)建該節(jié)點(diǎn)的會(huì)話的seddionID。如果該節(jié)點(diǎn)是持久節(jié)點(diǎn),那么這個(gè)屬性值為0。dataLength=22

//數(shù)據(jù)內(nèi)容的長(zhǎng)度numChildren=0

//子節(jié)點(diǎn)的個(gè)數(shù)五、Zookeeper分布式協(xié)調(diào)服務(wù)5.4Zookeeper的shell訪問5.4Zookeeper的shell訪問Zookeeper訪問方式Shell命令訪問JavaAPIZooInspector(封裝了JavaAPI的客戶端)5.4Zookeeper的shell訪問Shell訪問分類命令描述幫助help查看幫助創(chuàng)建節(jié)點(diǎn)createcreate[-s][-e]pathdataacl其中,-s或-e分別指定節(jié)點(diǎn)特性,順序或臨時(shí)節(jié)點(diǎn),若不指定,則表示持久節(jié)點(diǎn);acl用來進(jìn)行權(quán)限控制讀取節(jié)點(diǎn)lslspath[watch]getgetpath[watch]ls2ls2path[watch]statstatpath[watch]獲取節(jié)點(diǎn)的狀態(tài)信息更新節(jié)點(diǎn)setsetpathdata[version]data就是要更新的新內(nèi)容,version表示數(shù)據(jù)版本刪除節(jié)點(diǎn)deletedeletepath[version]rmr是一個(gè)遞歸刪除命令同步sync使客戶端的Znode視圖與Zookeeper同步5.4Zookeeper的shell訪問Shell訪問分類操作描述ACLgetACL/setACL為Znode獲取/設(shè)置ACL可了解:參考:/missmzt/p/4892719.html配額setquota于設(shè)置節(jié)點(diǎn)個(gè)數(shù)以及數(shù)據(jù)長(zhǎng)度的配額setquota–n4/zookeeper/node設(shè)置/zookeeper/node子節(jié)點(diǎn)個(gè)數(shù)最大為4delquotadelquota命令用于刪除配額,-n為子節(jié)點(diǎn)個(gè)數(shù),-b為節(jié)點(diǎn)數(shù)據(jù)長(zhǎng)度,如:delquota–n2listquota命令用于顯示配額,如listquota/storm操作歷史history/redohistory用于列出最近的命令歷史,redo命令用于再次執(zhí)行某個(gè)命令,使用方式為redocmdid如redo20會(huì)話connect連接服務(wù)器close關(guān)閉當(dāng)前連接,可用connect再次連接,不會(huì)退出客戶端quit關(guān)閉連接并退出連接客戶端五、Zookeeper分布式協(xié)調(diào)服務(wù)5.5Zookeeper的特性5.5Zookeeper的特性會(huì)話(Session)ZooKeeperServer端口:2181Client會(huì)話(Session)心跳維持ping監(jiān)視(Watch)客戶端啟動(dòng)時(shí)會(huì)與服務(wù)器建立一個(gè)TCP連接(會(huì)話的生命周期開始)。客戶端通過發(fā)送PING請(qǐng)求來保持會(huì)話的有效性(心跳檢測(cè)),也能夠向ZooKeeper服務(wù)器發(fā)送請(qǐng)求并接受響應(yīng),同時(shí)還能通過該連接接收來自服務(wù)器的Watch事件通知。5.5Zookeeper的特性臨時(shí)節(jié)點(diǎn)ZooKeeper中的節(jié)點(diǎn)有兩種,分別為臨時(shí)節(jié)點(diǎn)(Ephemeral)和永久節(jié)點(diǎn)(Persistent)。節(jié)點(diǎn)的類型在創(chuàng)建時(shí)即被確定,并且不能改變。臨時(shí)節(jié)點(diǎn)只存活在單個(gè)會(huì)話(Session)階段,臨時(shí)節(jié)點(diǎn)不允許擁有子節(jié)點(diǎn)#創(chuàng)建臨時(shí)節(jié)點(diǎn)[zk...]create-e/tmpmyvalue#查詢臨時(shí)節(jié)點(diǎn)的值[zk...]get/tmp[myvalue]#關(guān)閉會(huì)話,臨時(shí)節(jié)點(diǎn)消失[zk...]close5.5Zookeeper的特性順序節(jié)點(diǎn)用戶可以請(qǐng)求在ZooKeeper的路徑結(jié)尾添加一個(gè)遞增的計(jì)數(shù)器(大于2147483647時(shí)會(huì)溢出)。#創(chuàng)建順序節(jié)點(diǎn)[zk...]create-s/test/lockvalue15.5Zookeeper的特性順序節(jié)點(diǎn)通過順序節(jié)點(diǎn),可以創(chuàng)建分布式系統(tǒng)唯一的ID。利用臨時(shí)節(jié)點(diǎn)和順序節(jié)點(diǎn)的兩個(gè)屬性,可以實(shí)現(xiàn)分布式鎖服務(wù)。分布式鎖相關(guān)資料:https://juejin.im/post/5c01532ef265da61362232ed#創(chuàng)建臨時(shí)順序節(jié)點(diǎn)[zk...]create–e

-s/test/lockvalue15.5Zookeeper的特性Zookeeper事務(wù)操作改變ZooKeeper服務(wù)器狀態(tài)的操作稱為事務(wù)操作。例如數(shù)據(jù)節(jié)點(diǎn)創(chuàng)建與刪除、數(shù)據(jù)內(nèi)容更新和客戶端會(huì)話創(chuàng)建與失效。每一個(gè)事務(wù),都對(duì)應(yīng)一個(gè)全局唯一的事務(wù)ID(Zxid),Zxid是64位的數(shù)字Zxid的遞增性質(zhì),Zxid小,表示先發(fā)生。ZooKeeper的每個(gè)節(jié)點(diǎn)維護(hù)著三個(gè)事務(wù)ID。cZxid節(jié)點(diǎn)的創(chuàng)建時(shí)間所對(duì)應(yīng)的Zxid的事務(wù)IDmZxid節(jié)點(diǎn)的修改時(shí)間所對(duì)應(yīng)的Zxid的事務(wù)IDpZxid該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最后一次修改的事務(wù)ID5.5Zookeeper的特性版本號(hào)dataVersion——數(shù)據(jù)版本號(hào)。每次對(duì)節(jié)點(diǎn)進(jìn)行set操作,dataVersion的值都會(huì)增加1cversion——子節(jié)點(diǎn)的版本號(hào)。當(dāng)Znode的子節(jié)點(diǎn)有變化時(shí),cversion的值就會(huì)增加1。aclVersion——ACL的版本號(hào)。當(dāng)ACL變化時(shí),版本號(hào)變化。5.5Zookeeper的特性監(jiān)視(Watch)客戶端可以在節(jié)點(diǎn)上設(shè)置監(jiān)視器(watches)。當(dāng)節(jié)點(diǎn)的狀態(tài)發(fā)生改變時(shí)(數(shù)據(jù)的增、刪、改等操作)將會(huì)觸發(fā)watch對(duì)應(yīng)的操作。當(dāng)watch被觸發(fā)時(shí),ZooKeeper將會(huì)向客戶端發(fā)送且發(fā)送一個(gè)通知,因?yàn)閣atch只能觸發(fā)一次。5.5Zookeeper的特性監(jiān)視(Watch)基本特點(diǎn)一次設(shè)置對(duì)應(yīng)一次觸發(fā)異步觸發(fā)(不影響原來的操作)順序觸發(fā)可以觸發(fā)Watcher的操作:create,delete,setData可以設(shè)置Watcher的操作:exists,getChildren,getData五、Zookeeper分布式協(xié)調(diào)服務(wù)5.6Zookeeper的應(yīng)用場(chǎng)景5.6Zookeeper的應(yīng)用場(chǎng)景ZooKeeper的常用應(yīng)用場(chǎng)景(1)Master選舉;(事務(wù)特性)(2)分布式鎖;(順序節(jié)點(diǎn)特性)(3)數(shù)據(jù)發(fā)布與訂閱,用于配置中心(Watch)(4)分布式協(xié)調(diào)/通知;(5)心跳檢測(cè);(會(huì)話特性)5.6Zookeeper的應(yīng)用場(chǎng)景ZooKeeper的常用應(yīng)用場(chǎng)景(6)命名服務(wù)(NamingService)(7)分布式隊(duì)列;(順序節(jié)點(diǎn)特性)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論