Zookeeper的基礎(chǔ)概念

ZK的設(shè)計(jì)目標(biāo)

1.簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu):共享的樹(shù)型結(jié)構(gòu),類(lèi)似與文件系統(tǒng),數(shù)據(jù)存儲(chǔ)于內(nèi)存;
2.可以構(gòu)建集群:避免單點(diǎn)故障,超過(guò)半數(shù)就可以對(duì)外提供服務(wù)   ZAB協(xié)議;
3.順序訪問(wèn):對(duì)于每一個(gè)寫(xiě)請(qǐng)求,zk會(huì)分配一個(gè)全局唯一遞增ID,利用這個(gè)特性可以實(shí)現(xiàn)高級(jí)的協(xié)調(diào)服務(wù);
4.高性能:基于內(nèi)存操作,服務(wù)于非事物請(qǐng)求,適用于讀操作為主的場(chǎng)景;

ZK可以做什么

1.數(shù)據(jù)的發(fā)布與訂閱  :通過(guò)監(jiān)聽(tīng)機(jī)制
2.命名服務(wù)   :依賴(lài)于臨時(shí)節(jié)點(diǎn)
3.負(fù)載均衡   :依賴(lài)于臨時(shí)節(jié)點(diǎn)
4.集群服務(wù)   :比如選主,依賴(lài)于臨時(shí)節(jié)點(diǎn)  同一個(gè)目錄下不能創(chuàng)建同名的節(jié)點(diǎn)
5.配置的管理:數(shù)據(jù)存儲(chǔ)在內(nèi)存,但是數(shù)據(jù)量不大的需求
6.分布式鎖    :兩種實(shí)現(xiàn) 一種是基于臨時(shí)節(jié)點(diǎn),一種是基于臨時(shí)節(jié)點(diǎn)+順序節(jié)點(diǎn) ,后邊文章會(huì)有比較
7.分布式隊(duì)列:

ZK的數(shù)據(jù)模型

一、節(jié)點(diǎn)類(lèi)型:

1.持久節(jié)點(diǎn):會(huì)話(huà)過(guò)期后節(jié)點(diǎn)不會(huì)被刪除

2.臨時(shí)節(jié)點(diǎn):會(huì)話(huà)過(guò)期后會(huì)被刪除
節(jié)點(diǎn)和會(huì)話(huà)綁定,當(dāng)一個(gè)客戶(hù)端和服務(wù)端建立會(huì)話(huà)后,服務(wù)端會(huì)保存會(huì)話(huà)的id和過(guò)期時(shí)間,并啟動(dòng)一個(gè)定時(shí)任務(wù)來(lái)判斷當(dāng)前會(huì)話(huà)有沒(méi)有過(guò)期,所以當(dāng)鏈接斷開(kāi)但是會(huì)話(huà)還沒(méi)有過(guò)期時(shí)臨時(shí)節(jié)點(diǎn)也存在。如果不斷開(kāi)鏈接會(huì)話(huà)過(guò)期的時(shí)間是靠客戶(hù)端向服務(wù)端發(fā)送心跳來(lái)延長(zhǎng)過(guò)期時(shí)間的

3.順序節(jié)點(diǎn):一個(gè)有序節(jié)點(diǎn)被分配唯一一個(gè)單調(diào)遞增的整數(shù)且不同節(jié)點(diǎn)下順序不相干擾

二、一致性:

zab協(xié)議來(lái)解決多個(gè)節(jié)點(diǎn)的最終一致性

三、結(jié)構(gòu):

數(shù)據(jù)存儲(chǔ)

類(lèi)似于linux的文件結(jié)構(gòu),不同的是每個(gè)目錄下都可以寫(xiě)數(shù)據(jù)(默認(rèn)1M)

ZK的監(jiān)視與通知

  客戶(hù)端假如通過(guò)輪序的方式獲取 ZK 中的節(jié)點(diǎn)數(shù)據(jù) 效率不高 延遲也會(huì)增大;所以ZooKeeper支持對(duì)節(jié)點(diǎn)的變更進(jìn)行監(jiān)聽(tīng)通知的能力。
  一次監(jiān)聽(tīng)事件,只會(huì)被觸發(fā)一次,如果想要監(jiān)聽(tīng)到znode的第二次變更,需要重新注冊(cè)監(jiān)聽(tīng)
  客戶(hù)端設(shè)置的每個(gè)監(jiān)視點(diǎn)和會(huì)話(huà)相關(guān)聯(lián),如果會(huì)話(huà)過(guò)期,等待中的監(jiān)視點(diǎn)將會(huì)被刪除。不過(guò)監(jiān)視點(diǎn)可以跨越不同的服務(wù)器保持連接。
節(jié)點(diǎn)常見(jiàn)的事件通知
1.session建立成功事件
2.節(jié)點(diǎn)添加
3.節(jié)點(diǎn)刪除
4.節(jié)點(diǎn)變更
5.子節(jié)點(diǎn)列表變化

ZK的版本

每個(gè) Znode 都有一個(gè)版本號(hào),它隨著每次數(shù)據(jù)變化而遞增
可以使用版本號(hào)來(lái)組織并行操作的不一致性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 zookeeper(動(dòng)物管理員)設(shè)計(jì)目標(biāo)為分布式系統(tǒng)的任務(wù)執(zhí)行提供協(xié)同支持,包括Hadoop,Storm,H...
    天頡九問(wèn)閱讀 1,001評(píng)論 0 1
  • 轉(zhuǎn)自:http://www.itdecent.cn/p/84ad63127cd1作者:Jeffbond 簡(jiǎn)介 Z...
    大數(shù)據(jù)Zone閱讀 972評(píng)論 0 8
  • zookeeper為分布式應(yīng)用提供了高效且可靠的分布式協(xié)調(diào)服務(wù),提供了如統(tǒng)一命名服務(wù)、配置管理和分布式鎖等分布式的...
    小manong閱讀 1,455評(píng)論 0 0
  • ... 一、相關(guān)概念 中間件:為分布式系統(tǒng)提供協(xié)調(diào)服務(wù)的組件,如專(zhuān)門(mén)用于計(jì)算服務(wù)的機(jī)器就是一個(gè)計(jì)算型中間件,還有專(zhuān)...
    帥可兒妞閱讀 554評(píng)論 0 0
  • 一、系統(tǒng)模型 1、數(shù)據(jù)模型 zk結(jié)構(gòu)視圖與unix的文件系統(tǒng)有點(diǎn)類(lèi)似,但是沒(méi)有目錄和文件的相關(guān)概念。而是使用特有的...
    小manong閱讀 2,335評(píng)論 0 3

友情鏈接更多精彩內(nèi)容