在談到Zookeeper的一致性是哪種級別的一致性問題,以及CAP原則中的C是哪一種一致性級別時有些疑惑。
下面是大多數(shù)文章中提到的一致性級別
1. 一致性(Consistency)
一致性(Consistency)是指多副本(Replications)問題中的數(shù)據(jù)一致性??梢苑譃閺娨恢滦?、順序一致性與弱一致性。
1.1 強一致性(Strict Consistency)
也稱為:**原子一致性(Atomic Consistency)**線性一致性(Linearizable Consistency)
強一致性有兩個要求:
- 任何一次讀都能讀到某個數(shù)據(jù)的最近一次寫的數(shù)據(jù)。
- 系統(tǒng)中的所有進程,看到的操作順序,都和全局時鐘下的順序一致。
簡言之,在任意時刻,所有節(jié)點中的數(shù)據(jù)都是一樣的。
例如,對于關(guān)系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到,這是強一致性。
1.2 順序一致性(Sequential Consistency)
the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program. - - Lamport
兩個要求:
- 任何一次讀都能讀到某個數(shù)據(jù)的最近一次寫的數(shù)據(jù)。
- 系統(tǒng)的所有進程的順序一致,而且是合理的。即不需要和全局時鐘下的順序一致,錯的話一起錯,對的話一起對。
舉個例子:
Write(x, 4):寫入x=4?
Read(x, 0):讀出x=0
1)圖a是滿足順序一致性,但是不滿足強一致性的。原因在于,從全局時鐘的觀點來看,P2進程對變量X的讀操作在P1進程對變量X的寫操作之后,然而讀出來的卻是舊的數(shù)據(jù)。但是這個圖卻是滿足順序一致性的,因為兩個進程P1,P2的一致性并沒有沖突。從這兩個進程的角度來看,順序應(yīng)該是這樣的:Write(y,2) , Read(x,0) , Write(x,4), Read(y,2),每個進程內(nèi)部的讀寫順序都是合理的,但是這個順序與全局時鐘下看到的順序并不一樣。
2)圖b滿足強一致性,因為每個讀操作都讀到了該變量的最新寫的結(jié)果,同時兩個進程看到的操作順序與全局時鐘的順序一樣,都是Write(y,2) ,Write(x,4), Read(x,4) ,? Read(y,2)。
3)圖c不滿足順序一致性,當(dāng)然也就不滿足強一致性了。因為從進程P1的角度看,它對變量Y的讀操作返回了結(jié)果0。那么就是說,P1進程的對變量Y的讀操作在P2進程對變量Y的寫操作之前,這意味著它認(rèn)為的順序是這樣的:Write(x,4) , Read(y,0) , Write(y,2), Read(x,0),顯然這個順序又是不能被滿足的,因為最后一個對變量x的讀操作讀出來也是舊的數(shù)據(jù)。因此這個順序是有沖突的,不滿足順序一致性。
1.3 弱一致性
數(shù)據(jù)更新后,如果能容忍后續(xù)的訪問只能訪問到部分或者全部訪問不到,則是弱一致性。
最終一致性就屬于弱一致性。
最終一致性
不保證在任意時刻任意節(jié)點上的同一份數(shù)據(jù)都是相同的,但是隨著時間的遷移,不同節(jié)點上的同一份數(shù)據(jù)總是在向趨同的方向變化。
簡單說,就是在一段時間后,節(jié)點間的數(shù)據(jù)會最終達到一致狀態(tài)。
最終一致性根據(jù)更新數(shù)據(jù)后各進程訪問到數(shù)據(jù)的時間和方式的不同,又可以區(qū)分為:
因果一致性(Casual Consistency)。如果進程A通知進程B它已更新了一個數(shù)據(jù)項,那么進程B的后續(xù)訪問將返回更新后的值,且一次寫入將保證取代前一次寫入。與進程A無因果關(guān)系的進程C的訪問,遵守一般的最終一致性規(guī)則。
**“讀己之所寫(read-your-writes)”一致性。**當(dāng)進程A自己更新一個數(shù)據(jù)項之后,它總是訪問到更新過的值,絕不會看到舊值。這是因果一致性模型的一個特例。
小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。
深知大多數(shù)初中級前端工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Web前端開發(fā)全套學(xué)習(xí)資料》送給大家,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負(fù)擔(dān)。
由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻
如果你覺得這些內(nèi)容對你有幫助,可以添加下面V無償領(lǐng)取?。▊渥ⅲ呵岸耍?/strong>文章來源:http://www.zghlxwxcb.cn/news/detail-848358.html
你覺得這些內(nèi)容對你有幫助,可以添加下面V無償領(lǐng)?。。▊渥ⅲ呵岸耍?*
[外鏈圖片轉(zhuǎn)存中…(img-XhkTRsVx-1710917661882)]文章來源地址http://www.zghlxwxcb.cn/news/detail-848358.html
到了這里,關(guān)于分布式系統(tǒng)的一致性級別劃分及Zookeeper一致性級別分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!