成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Zookeeper詳解(三):Zookeeper中的Znod-創(chuàng)新互聯(lián)

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

建德網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,建德網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為建德近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的建德做網(wǎng)站的公司定做!

ZK擁有一個(gè)命名空間就像一個(gè)精簡(jiǎn)的文件系統(tǒng),不同的是它的命名空間中的每個(gè)節(jié)點(diǎn)擁有它自己或者它下面子節(jié)點(diǎn)相關(guān)聯(lián)的數(shù)據(jù)。ZK中必須使用絕對(duì)路徑也就是使用“/”開頭。

Znode:

ZK目錄樹中每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)Znode。每個(gè)Znode維護(hù)這一個(gè)屬性,當(dāng)前版本、數(shù)據(jù)版本、建立時(shí)間和修改時(shí)間等,看下圖:

Zookeeper詳解(三):Zookeeper中的Znod

ZK就是使用這些屬性來實(shí)現(xiàn)特殊功能的。當(dāng)一個(gè)客戶端要對(duì)某個(gè)節(jié)點(diǎn)進(jìn)行修改時(shí),必須提供該數(shù)據(jù)的版本號(hào),當(dāng)節(jié)點(diǎn)數(shù)據(jù)發(fā)生變化是其版本號(hào)就會(huì)增加。如下圖:

Zookeeper詳解(三):Zookeeper中的Znod

Znode具有如下特性:

  • Watches:客戶端可以在節(jié)點(diǎn)上設(shè)置Watches(可以叫做監(jiān)視器)。當(dāng)節(jié)點(diǎn)狀態(tài)發(fā)生變化時(shí),就會(huì)觸發(fā)監(jiān)視器對(duì)應(yīng)的操作,當(dāng)監(jiān)視器被觸發(fā)時(shí),ZK服務(wù)器會(huì)向客戶端發(fā)送且只發(fā)送一個(gè)通知

  • 數(shù)據(jù)訪問:ZK上存儲(chǔ)的數(shù)據(jù)需要被原子性的操作(要么修改成功要么回到原樣),也是就讀操作將會(huì)讀取節(jié)點(diǎn)相關(guān)所有數(shù)據(jù),寫操作也會(huì)修改節(jié)點(diǎn)相關(guān)所有數(shù)據(jù),,而且每個(gè)節(jié)點(diǎn)都有自己的ACL。

節(jié)點(diǎn)類型:ZK中有幾種節(jié)點(diǎn)類型,節(jié)點(diǎn)類型在節(jié)點(diǎn)創(chuàng)建的時(shí)候就被確定且不可改變

  • 臨時(shí)節(jié)點(diǎn)(EPHEMERAL):臨時(shí)創(chuàng)建的,會(huì)話結(jié)束節(jié)點(diǎn)自動(dòng)被刪除,也可以手動(dòng)刪除,臨時(shí)節(jié)點(diǎn)不能擁有子節(jié)點(diǎn)

  • 臨時(shí)順序節(jié)點(diǎn)(EPHEMERAL_SEQUENTIAL):具有臨時(shí)節(jié)點(diǎn)特征,但是它會(huì)有序列號(hào),分布式鎖中會(huì)用到該類型節(jié)點(diǎn)

  • 持久節(jié)點(diǎn)(PERSISTENT):創(chuàng)建后永久存在,除非主動(dòng)刪除。

  • 持久順序節(jié)點(diǎn)(PERSISTENT_SEQUENTIAL):該節(jié)點(diǎn)創(chuàng)建后持久存在,相對(duì)于持久節(jié)點(diǎn)它會(huì)在節(jié)點(diǎn)名稱后面自動(dòng)增加一個(gè)10位數(shù)字的序列號(hào),這個(gè)計(jì)數(shù)對(duì)于此節(jié)點(diǎn)的父節(jié)點(diǎn)是唯一,如果這個(gè)序列號(hào)大于2^32-1就會(huì)溢出。

創(chuàng)建順序節(jié)點(diǎn)

create -s /NODE_NAME DATA    # -e參數(shù)為創(chuàng)建臨時(shí)節(jié)點(diǎn),如果不帶參數(shù)則創(chuàng)建持久節(jié)點(diǎn)

Zookeeper詳解(三):Zookeeper中的Znod

ZK中的時(shí)間和版本號(hào):

ZXID:ZK節(jié)點(diǎn)狀態(tài)改變會(huì)導(dǎo)致該節(jié)點(diǎn)收到一個(gè)zxid格式的時(shí)間戳,這個(gè)時(shí)間戳是全局有序的,每次更新都會(huì)產(chǎn)生一個(gè)新的。如果zxid1的值小于zxid2,那么說明zxid2發(fā)生的改變?cè)趜xid1之后。zxid是一個(gè)唯一的事務(wù)ID,具有遞增性,一個(gè)znode的建立或者更新都會(huì)產(chǎn)生一個(gè)新的zxid值,具體時(shí)間有3個(gè)cZxid(節(jié)點(diǎn)創(chuàng)建時(shí)間)、mZxid(該節(jié)點(diǎn)修改時(shí)間,與子節(jié)點(diǎn)無關(guān))、pZxid(該節(jié)點(diǎn)的子節(jié)點(diǎn)的最后一次創(chuàng)建或者修改時(shí)間,孫子節(jié)點(diǎn)無關(guān))

version:對(duì)節(jié)點(diǎn)的每次操作都會(huì)使節(jié)點(diǎn)的版本號(hào)增加,有三個(gè)版本號(hào)dataversion(數(shù)據(jù)版本號(hào))、cversion(子節(jié)點(diǎn)版本號(hào))、aclversion(節(jié)點(diǎn)所擁有的ACL版本號(hào))

Zookeeper詳解(三):Zookeeper中的Znod

cZxid
創(chuàng)建節(jié)點(diǎn)時(shí)的事務(wù)ID
ctime
創(chuàng)建節(jié)點(diǎn)時(shí)的時(shí)間
mZxid
最后修改節(jié)點(diǎn)時(shí)的事務(wù)ID
mtime
最后修改節(jié)點(diǎn)時(shí)的時(shí)間
pZxid
表示該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最后一次修改的事務(wù)ID,添加子節(jié)點(diǎn)或刪除子節(jié)點(diǎn)就會(huì)影響子節(jié)點(diǎn)列表,但是修改子節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容則不影響該ID
cversion
子節(jié)點(diǎn)版本號(hào),子節(jié)點(diǎn)每次修改版本號(hào)加1
dataversion
數(shù)據(jù)版本號(hào),數(shù)據(jù)每次修改該版本號(hào)加1
aclversion
權(quán)限版本號(hào),權(quán)限每次修改該版本號(hào)加1
dataLength
該節(jié)點(diǎn)的數(shù)據(jù)長(zhǎng)度
numChildren
該節(jié)點(diǎn)擁有子節(jié)點(diǎn)的數(shù)量

版本號(hào)的作用

Zookeeper里面的版本號(hào)和我們理解的版本號(hào)不同,它表示的是對(duì)數(shù)據(jù)節(jié)點(diǎn)的內(nèi)容、子節(jié)點(diǎn)列表或者ACL信息的修改次數(shù)。節(jié)點(diǎn)創(chuàng)建時(shí)dataversion、aclversion,cversion都為0,每次修改響應(yīng)內(nèi)容其對(duì)應(yīng)的版本號(hào)加1。

這個(gè)版本號(hào)的用途就和分布式場(chǎng)景的一個(gè)鎖概念有關(guān)。比如演出售票中的一個(gè)座位,顯然每個(gè)場(chǎng)次中的每個(gè)座位都只有一個(gè),不可能賣出2次。如果A下單的時(shí)候顯示可售,他想買,那么為了保證他可以下單成功,此時(shí)別人就不能買。這時(shí)候就需要有一種機(jī)制來保證同一時(shí)刻只能有一個(gè)人去修改該座位的庫(kù)存。這就用到了鎖。鎖有悲觀鎖和樂觀鎖。

  • 悲觀鎖:它會(huì)假定所有不同事務(wù)的處理一定會(huì)出現(xiàn)干擾,數(shù)據(jù)庫(kù)中最嚴(yán)格的并發(fā)控制策略,如果一個(gè)事務(wù)A正在對(duì)數(shù)據(jù)處理,那么在整個(gè)事務(wù)過程中,其他事務(wù)都無法對(duì)這個(gè)數(shù)據(jù)進(jìn)行更新操作,直到A事務(wù)釋放了這個(gè)鎖。

  • 樂觀鎖:它假定所有不同事務(wù)的處理不一定會(huì)出現(xiàn)干擾,所以在大部分操作里不許加鎖,但是既然是并發(fā)就有出現(xiàn)干擾的可能,如何解決沖突就是一個(gè)問題。在樂觀鎖中當(dāng)你在提交更新請(qǐng)求之前,你要先去檢查你讀取這個(gè)數(shù)據(jù)之后該數(shù)據(jù)是否發(fā)生了變化,如果有那么你此次的提交就要放棄,如果沒有就可以提交。

Zookeeper中的版本號(hào)就是樂觀鎖,你修改節(jié)點(diǎn)數(shù)據(jù)之前會(huì)讀取這個(gè)數(shù)據(jù)并記錄該數(shù)據(jù)版本號(hào),當(dāng)你需要更新時(shí)會(huì)攜帶這個(gè)版本號(hào)去提交,如果你此時(shí)攜帶的版本號(hào)(就是你上次讀取出來的)和當(dāng)前節(jié)點(diǎn)的版本號(hào)相同則說明該數(shù)據(jù)沒有被修改過,那么你的提交就會(huì)成功,如果提交失敗說明該數(shù)據(jù)在你讀取之后和提交之前這段時(shí)間內(nèi)被修改了。

這里通過set命令并攜帶版本號(hào)提交更新,版本號(hào)相同更新就會(huì)成功。

Zookeeper詳解(三):Zookeeper中的Znod

如果你再次更新并使用之前的版本號(hào)那么就會(huì)失敗。

Zookeeper詳解(三):Zookeeper中的Znod


另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:Zookeeper詳解(三):Zookeeper中的Znod-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article42/dseohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、建站公司、動(dòng)態(tài)網(wǎng)站ChatGPT、搜索引擎優(yōu)化、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
夹江县| 兴隆县| 新密市| 拉萨市| 米泉市| 兴和县| 台南县| 朔州市| 台北县| 延川县| 比如县| 永修县| 永清县| 沾益县| 保靖县| 高尔夫| 宝丰县| 香格里拉县| 哈巴河县| 周至县| 富裕县| 雷山县| 石景山区| 贵州省| 平泉县| 宁化县| 遂平县| 恩施市| 武陟县| 偃师市| 吉水县| 浏阳市| 曲阜市| 壤塘县| 乌鲁木齐县| 彩票| 边坝县| 马尔康县| 邵阳市| 图片| 安达市|