本篇文章為大家展示了怎么分析Zookeeper的一致性,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司專注于都昌網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供都昌營銷型網(wǎng)站建設(shè),都昌網(wǎng)站制作、都昌網(wǎng)頁設(shè)計、都昌網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造都昌網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供都昌網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
Zookeeper 是一種高性能、可擴展的服務(wù)。 Zookeeper 的讀寫速度非???,并且讀的速度要比寫的速度更快。另外,在進(jìn)行讀操作的時候, ZooKeeper 依然能夠為舊的數(shù)據(jù)提供服務(wù)。這些都是由于 ZooKeepe 所提供的一致性保證,它具有如下特點:
【Zookeeper提供的一致性是弱一致性,首先數(shù)據(jù)的復(fù)制有如下規(guī)則:zookeeper確保對znode樹的每一個修改都會被復(fù)制到集合體中超過半數(shù)的機器上。那么就有可能有節(jié)點的數(shù)據(jù)不是最新的而被客戶端訪問到。并且會有一個時間點,在集群中是不一致的.
也就是Zookeeper只保證最終一致性, 但是實時的一致性可以由客戶端調(diào)用自己來保證,通過調(diào)用sync()方法.】
順序一致性
客戶端的更新順序與它們被發(fā)送的順序相一致。
原子性
更新操作要么成功要么失敗,沒有第三種結(jié)果。
單系統(tǒng)鏡像
無論客戶端連接到哪一個服務(wù)器,客戶端將看到相同的 ZooKeeper 視圖。
【如果數(shù)據(jù)不一致,怎么能夠保證看到相同的視圖? 插入/刪除/修改都會對數(shù)據(jù)結(jié)構(gòu)有影響】
可靠性
一旦一個更新操作被應(yīng)用,那么在客戶端再次更新它之前,它的值將不會改變。。這個保證將會產(chǎn)生下面兩種結(jié)果:
1 .如果客戶端成功地獲得了正確的返回代碼,那么說明更新已經(jīng)成果。如果不能夠獲得返回代碼(由于通信錯誤、超時等等),那么客戶端將不知道更新操作是否生效。
2 .當(dāng)從故障恢復(fù)的時候,任何客戶端能夠看到的執(zhí)行成功的更新操作將不會被回滾。
實時性
在特定的一段時間內(nèi),客戶端看到的系統(tǒng)需要被保證是實時的(在十幾秒的時間里)。在此時間段內(nèi),任何系統(tǒng)的改變將被客戶端看到,或者被客戶端偵測到。
【偽實時性,太讓人誤解了,直白點說就是數(shù)據(jù)可以在十幾秒Sync到各個節(jié)點,保證最終一致性. 我第一時間看到這個實時性的時候,我就好奇,Oracle RAC花了老鼻子勁才保證了實時性和一致性,Zookeeper是如何輕松做到的,原來是個假的,還說的那么讓人誤會. 】
給予這些一致性保證, ZooKeeper 更高級功能的設(shè)計與實現(xiàn)將會變得非常容易,例如: leader 選舉、隊列以及可撤銷鎖等機制的實現(xiàn)。
【
用分布式系統(tǒng)的CAP原則來分析Zookeeper.
1)C: Zookeeper保證了最終一致性,在十幾秒可以Sync到各個節(jié)點.
2)A: Zookeeper保證了可用性,數(shù)據(jù)總是可用的,沒有鎖.并且有一大半的節(jié)點所擁有的數(shù)據(jù)是最新的,實時的. 如果想保證取得是數(shù)據(jù)一定是最新的,需要手工調(diào)用Sync()
3)P: 有2點需要分析的.
節(jié)點多了會導(dǎo)致寫數(shù)據(jù)延時非常大,因為需要多個節(jié)點同步.
節(jié)點多了Leader選舉非常耗時, 就會放大網(wǎng)絡(luò)的問題. 可以通過引入observer節(jié)點緩解這個問題.
】
上述內(nèi)容就是怎么分析Zookeeper的一致性,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。