本篇文章為大家展示了zookeeper的操作與應(yīng)用場景是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)祁東免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
Zookeeper作為一個分布式協(xié)調(diào)系統(tǒng)提供了一項基本服務(wù):分布式鎖服務(wù),分布式鎖是分布式協(xié)調(diào)技術(shù)實現(xiàn)的核心內(nèi)容。像配置管理、任務(wù)分發(fā)、組服務(wù)、分布式消息隊列、分布式通知/協(xié)調(diào)等,這些應(yīng)用實際上都是基于這項基礎(chǔ)服務(wù)由用戶自己摸索出來的。
zookeeper作為分布式協(xié)調(diào)系統(tǒng)在大數(shù)據(jù)領(lǐng)域非常常用,它是一個很好的中心化管理工具。下面舉幾個常見的應(yīng)用場景。
HA機制(分布式鎖的應(yīng)用):Master掛掉之后迅速切換到slave節(jié)點。
HA機制 :類似HDFS/YARN。
配置管理 :client需要讀寫hbase的數(shù)據(jù)首先都是連到ZK讀取root表,獲得meta表所在的region,最后找到數(shù)據(jù)所在位置。
任務(wù)發(fā)布:regionserver掛了一臺,master需要重新分配region,會把任務(wù)放在zookeeper等regionserver來獲取
配置管理:broker會在zookeeper注冊并保持相關(guān)的元數(shù)據(jù)(topic,partition信息等)更新
任務(wù)分配:給topic分配partitions和replication
ZooKeeper命名空間中的Znode,兼具文件和目錄兩種特點。既像文件一樣維護著數(shù)據(jù)、元信息、ACL、時間戳等數(shù)據(jù)結(jié)構(gòu),又像目錄一樣可以作為路徑標(biāo)識的一部分。 每個Znode由3部分組成:
stat狀態(tài)信息:描述該Znode的版本, 權(quán)限等信息
data:與該Znode關(guān)聯(lián)的數(shù)據(jù)(配置文件信息、狀態(tài)信息、匯集位置),數(shù)據(jù)大小至多1M
children:該Znode下的子節(jié)點
ZooKeeper中的每個節(jié)點存儲的數(shù)據(jù)要被原子性的操作。也就是說讀操作將獲取與節(jié)點相關(guān)的所有數(shù)據(jù),寫操作也將替換掉節(jié)點的所有數(shù)據(jù)。另外,每一個節(jié)點都擁有自己的ACL(訪問控制列表),這個列表規(guī)定了用戶的權(quán)限,即限定了特定用戶對目標(biāo)節(jié)點可以執(zhí)行的操作。
ZooKeeper可以為所有的讀操作設(shè)置watch,包括:exists()、getChildren()及getData()。當(dāng)節(jié)點狀態(tài)發(fā)生改變時(Znode的增、刪、改)將會觸發(fā)watch所對應(yīng)的操作。當(dāng)watch被觸發(fā)時,ZooKeeper將會向客戶端發(fā)送且僅發(fā)送一條通知,因為watch只能被觸發(fā)一次,這樣可以減少網(wǎng)絡(luò)流量。
數(shù)據(jù)watch(data watches):getData和exists負責(zé)設(shè)置數(shù)據(jù)watch
孩子watch(child watches):getChildren負責(zé)設(shè)置孩子watch
ZooKeeper中的節(jié)點有兩種,分別為臨時節(jié)點和永久節(jié)點(還可再分為有序無序)。節(jié)點的類型在創(chuàng)建時即被確定,并且不能改變。
臨時節(jié)點:該節(jié)點的生命周期依賴于創(chuàng)建它們的會話。一旦會話(Session)結(jié)束,臨時節(jié)點將被自動刪除,當(dāng)然可以也可以手動刪除。雖然每個臨時的Znode都會綁定到一個客戶端會話,但他們對所有的客戶端還是可見的。另外,ZooKeeper的臨時節(jié)點不允許擁有子節(jié)點。(分布式隊列)
永久節(jié)點:該節(jié)點的生命周期不依賴于會話,并且只有在客戶端顯示執(zhí)行刪除操作的時候,他們才能被刪除。
兩種方式:
創(chuàng)建兩個或多個有序臨時節(jié)點,永遠把最小值當(dāng)做master
創(chuàng)建臨時節(jié)點的為master,多個slave會watch這個節(jié)點
存儲集群元數(shù)據(jù)提供給client使用,體現(xiàn)在比如需要對HBase和Kafka操作時,都會直接連到zookeeper,zookeeper記錄了數(shù)據(jù)存儲的位置,存活的節(jié)點等元數(shù)據(jù)信息。
Master要監(jiān)視/works和/tasks兩個永久節(jié)點,以便能感知到由哪些slave當(dāng)前可用,當(dāng)前有新任務(wù)需要分配。 分配過程:在/assign下創(chuàng)建當(dāng)前可用的workA,找到需要分配的taskA,創(chuàng)建/assign/workA/taskA
zookeeper還有很多類似的應(yīng)用大多都是基于上面的特性??偟膩碚f,zk只是一個提供了一些特性的系統(tǒng),用戶根據(jù)這些特性自己定義了它的用法。
上述內(nèi)容就是zookeeper的操作與應(yīng)用場景是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。