Zookeeper用例:ready znode與配置改變
在伊通等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),伊通網(wǎng)站建設(shè)費(fèi)用合理。ZooKeeper中,新的leader可以將某個(gè)path指定為ready znode。 其他節(jié)點(diǎn)將僅在該znode存在時(shí)使用配置。
當(dāng)leader 重建配置之后,會(huì)通知其他副本重建配置,并新建ready znode.
副本為了防止出現(xiàn)不一致,必須在重建配置時(shí),處理完其之前的所有事務(wù)。保證所有服務(wù)的狀態(tài)一致。
任何一個(gè)副本更新失敗,都不能夠應(yīng)用都需要進(jìn)行重試。
下面的偽代碼向我們鎖的實(shí)現(xiàn)。通過(guò)create試圖持有鎖,如果鎖已經(jīng)被其他的client持有,則通過(guò)watch方式監(jiān)控鎖的釋放。
acquire lock:
retry:
r = create("app/lock", "", empheral)
if r:
return
else:
getData("app/lock", watch=True)
watch_event:
goto retry
release lock:
delete("app/lock")
由于上面的偽代碼可能會(huì)出現(xiàn)羊群效應(yīng),可以嘗試下面的方式
znode下方的children中,序號(hào)最低的的是持有鎖的
其他在等待的client只watch前一個(gè)znode的變化,避免了羊群效應(yīng)
acquire lock:
n = create("app/lock/request-", "", empheral|sequential)
retry:
requests = getChildren(l, false)
if n is lowest znode in requests:
return
p = "request-%d" % n - 1
if exists(p, watch = True)
goto retry
watch_event:
goto retry
應(yīng)用程序還有許多需要解決的問(wèn)題
例如如果我們要在GFS中使用Zookeeper,那么我們還需要
chunks的副本方案
primary失敗的協(xié)議
…
但是使用了Zookeeper,至少可以使master容錯(cuò),不會(huì)發(fā)生網(wǎng)絡(luò)分區(qū)腦裂的問(wèn)題
和lab3相似,具有兩層
ZooKeeper 服務(wù)層 (K/V 層)
ZAB 層 (Raft 層)
Start() 在底層執(zhí)行插入操作
隨后,ops從每個(gè)副本服務(wù)器的底層彈出,這些操作按照彈出的順序提交(commited),在lab3中使用apply channel,在ZAB層中,通過(guò)調(diào)用abdeliver()
場(chǎng)景:primary收到客戶端請(qǐng)求后,返回失敗,客戶端進(jìn)行重試
在lab3中,我們使用了map來(lái)解決重復(fù)的請(qǐng)求問(wèn)題,但是每一個(gè)客戶端是堵塞的,只能夠等待完成才能進(jìn)行下一個(gè)
在Zookeeper中,在一段時(shí)間內(nèi)的操作是冪等的,以最后一次操作為準(zhǔn)
大部分的操作都是讀取操作,他們不修改狀態(tài)
讀取操作是否必須通過(guò)ZAB層?
任何副本服務(wù)器都可以執(zhí)行讀取操作?
如果讀取操作通過(guò)Raft/ZAB層,則性能會(huì)降低
讀取操作如果不通過(guò)Raft/ZAB層、可能會(huì)返回過(guò)時(shí)的數(shù)據(jù)
讀取可以由任何副本執(zhí)行
讀取吞吐量隨著服務(wù)器數(shù)量的增加而增加
讀取返回它看到的最后一個(gè)zxid
只有sync-read() 保證數(shù)據(jù)不過(guò)時(shí)
read操作會(huì)返回zxid,zxid包含了部分客戶端對(duì)于此read請(qǐng)求相對(duì)應(yīng)的write請(qǐng)求的順序,從而客戶端能夠了解此server操作是否落后于client。
心跳檢測(cè)以及建立session時(shí)都會(huì)返回zxid,當(dāng)客戶端連接服務(wù)器時(shí),通過(guò)zxid對(duì)比保證client與server的狀態(tài)足夠接近
Zookeeper通過(guò)將wait-free對(duì)象(znode對(duì)象)暴露給客戶端解決分布式系統(tǒng)中的進(jìn)程協(xié)調(diào)問(wèn)題
Zookeeper保證了write操作的線性一致性以及客戶端操作的FIFO順序
Zookeeper通過(guò)允許讀取操作返回過(guò)時(shí)數(shù)據(jù)實(shí)現(xiàn)了每秒數(shù)十萬(wàn)次操作的吞吐量值,適用于多讀而少些的場(chǎng)景
Zookeeper仍然提供了保證讀一致性的sync操作
Zookeeper具有強(qiáng)大的API功能用于多樣的應(yīng)用場(chǎng)景,并且內(nèi)在提供主從容錯(cuò)機(jī)制,在包括雅虎在內(nèi)的多家公司廣泛應(yīng)用
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+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)景需求。
分享文章:Zookeeper的應(yīng)用場(chǎng)景-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://jinyejixie.com/article36/dhdppg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、全網(wǎng)營(yíng)銷推廣、移動(dòng)網(wǎng)站建設(shè)、微信小程序、企業(yè)網(wǎng)站制作、微信公眾號(hào)
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容