轉(zhuǎn)載:https://www.cnblogs.com/FlyAway2013/p/10118865.html
閱讀目錄
比起CAP的生硬來, 我更加喜歡BASE谨究。BASE 顯得更加好理解虎忌。盡管BASE 這個(gè)名字本身有迎合語言習(xí)慣的惡臭味您朽,為什么不是縮寫為 BaSsEc 呢?
<pre>其實(shí)大部分系統(tǒng)是可以 同時(shí) CAP 的奖年, 因?yàn)門M 網(wǎng)絡(luò)問題也不是 大概率腺劣! 當(dāng)然對(duì)于大型分布式系統(tǒng)可能就不一樣的了! </pre>
基本介紹
**介紹1 **
[](javascript:void(0); "復(fù)制代碼")
<pre>BASE理論
BASE是指基本可用(Basically Available)褒墨、軟狀態(tài)( Soft State)炫刷、最終一致性( Eventual Consistency)。
基本可用(Basically Available)
基本可用是指分布式系統(tǒng)在出現(xiàn)故障的時(shí)候郁妈,允許損失部分可用性浑玛,即保證核心可用。
電商大促時(shí)噩咪,為了應(yīng)對(duì)訪問量激增顾彰,部分用戶可能會(huì)被引導(dǎo)到降級(jí)頁面,服務(wù)層也可能只提供降級(jí)服務(wù)胃碾。這就是損失部分可用性的體現(xiàn)涨享。
軟狀態(tài)( Soft State)
軟狀態(tài)是指允許系統(tǒng)存在中間狀態(tài),而該中間狀態(tài)不會(huì)影響系統(tǒng)整體可用性仆百。分布式存儲(chǔ)中一般一份數(shù)據(jù)至少會(huì)有三個(gè)副本厕隧,允許不同節(jié)點(diǎn)間副本同步的延時(shí)就是軟狀態(tài)的體現(xiàn)。mysql replication的異步復(fù)制也是一種體現(xiàn)俄周。
最終一致性( Eventual Consistency)
最終一致性是指系統(tǒng)中的所有數(shù)據(jù)副本經(jīng)過一定時(shí)間后吁讨,最終能夠達(dá)到一致的狀態(tài)。弱一致性和強(qiáng)一致性相反峦朗,最終一致性是弱一致性的一種特殊情況挡爵。
鏈接:http://www.reibang.com/p/f432665d523f</pre>
[](javascript:void(0); "復(fù)制代碼")
<pre>介紹2</pre>
[](javascript:void(0); "復(fù)制代碼")
<pre>1. 什么是 Base 理論
BASE:全稱:Basically Available(基本可用),Soft state(軟狀態(tài)),和 Eventually consistent(最終一致性)三個(gè)短語的縮寫甚垦,來自 ebay 的架構(gòu)師提出。
Base 理論是對(duì) CAP 中一致性和可用性權(quán)衡的結(jié)果涣雕,其來源于對(duì)大型互聯(lián)網(wǎng)分布式實(shí)踐的總結(jié)艰亮,是基于 CAP 定理逐步演化而來的。其核心思想是:
既是無法做到強(qiáng)一致性(Strong consistency)挣郭,但每個(gè)應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點(diǎn)迄埃,采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達(dá)到最終一致性(Eventual consistency)。 2. Basically Available(基本可用)
什么是基本可用呢兑障?假設(shè)系統(tǒng)侄非,出現(xiàn)了不可預(yù)知的故障蕉汪,但還是能用,相比較正常的系統(tǒng)而言:
響應(yīng)時(shí)間上的損失:正常情況下的搜索引擎 0.5 秒即返回給用戶結(jié)果逞怨,而基本可用的搜索引擎可以在 1 秒作用返回結(jié)果者疤。
功能上的損失:在一個(gè)電商網(wǎng)站上,正常情況下叠赦,用戶可以順利完成每一筆訂單驹马,但是到了大促期間,為了保護(hù)購物系統(tǒng)的穩(wěn)定性除秀,部分消費(fèi)者可能會(huì)被引導(dǎo)到一個(gè)降級(jí)頁面糯累。 3. Soft state(軟狀態(tài))
什么是軟狀態(tài)呢?相對(duì)于原子性而言册踩,要求多個(gè)節(jié)點(diǎn)的數(shù)據(jù)副本都是一致的泳姐,這是一種 “硬狀態(tài)”。
軟狀態(tài)指的是:允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài)暂吉,并認(rèn)為該狀態(tài)不影響系統(tǒng)的整體可用性胖秒,即允許系統(tǒng)在多個(gè)不同節(jié)點(diǎn)的數(shù)據(jù)副本存在數(shù)據(jù)延時(shí)。 4. Eventually consistent(最終一致性)
這個(gè)比較好理解了哈借笙。
上面說軟狀態(tài)扒怖,然后不可能一直是軟狀態(tài),必須有個(gè)時(shí)間期限业稼。在期限過后盗痒,應(yīng)當(dāng)保證所有副本保持?jǐn)?shù)據(jù)一致性。從而達(dá)到數(shù)據(jù)的最終一致性低散。這個(gè)時(shí)間期限取決于網(wǎng)絡(luò)延時(shí)俯邓,系統(tǒng)負(fù)載,數(shù)據(jù)復(fù)制方案設(shè)計(jì)等等因素熔号。
稍微官方一點(diǎn)的說法就是:
系統(tǒng)能夠保證在沒有其他新的更新操作的情況下稽鞭,數(shù)據(jù)最終一定能夠達(dá)到一致的狀態(tài),因此所有客戶端對(duì)系統(tǒng)的數(shù)據(jù)訪問最終都能夠獲取到最新的值引镊。
而在實(shí)際工程實(shí)踐中朦蕴,最終一致性分為 5 種: 1. 因果一致性(Causal consistency)
指的是:如果節(jié)點(diǎn) A 在更新完某個(gè)數(shù)據(jù)后通知了節(jié)點(diǎn) B,那么節(jié)點(diǎn) B 之后對(duì)該數(shù)據(jù)的訪問和修改都是基于 A 更新后的值弟头。于此同時(shí)吩抓,和節(jié)點(diǎn) A 無因果關(guān)系的節(jié)點(diǎn) C 的數(shù)據(jù)訪問則沒有這樣的限制。 2. 讀己之所寫(Read your writes)
這種就很簡(jiǎn)單了赴恨,節(jié)點(diǎn) A 更新一個(gè)數(shù)據(jù)后疹娶,它自身總是能訪問到自身更新過的最新值,而不會(huì)看到舊值伦连。其實(shí)也算一種因果一致性雨饺。 3. 會(huì)話一致性(Session consistency)
會(huì)話一致性將對(duì)系統(tǒng)數(shù)據(jù)的訪問過程框定在了一個(gè)會(huì)話當(dāng)中:系統(tǒng)能保證在同一個(gè)有效的會(huì)話中實(shí)現(xiàn) “讀己之所寫” 的一致性钳垮,也就是說,執(zhí)行更新操作之后额港,客戶端能夠在同一個(gè)會(huì)話中始終讀取到該數(shù)據(jù)項(xiàng)的最新值饺窿。 4. 單調(diào)讀一致性(Monotonic read consistency)
單調(diào)讀一致性是指如果一個(gè)節(jié)點(diǎn)從系統(tǒng)中讀取出一個(gè)數(shù)據(jù)項(xiàng)的某個(gè)值后,那么系統(tǒng)對(duì)于該節(jié)點(diǎn)后續(xù)的任何數(shù)據(jù)訪問都不應(yīng)該返回更舊的值锹安。 5. 單調(diào)寫一致性(Monotonic write consistency)
指一個(gè)系統(tǒng)要能夠保證來自同一個(gè)節(jié)點(diǎn)的寫操作被順序的執(zhí)行短荐。
然而,在實(shí)際的實(shí)踐中叹哭,這 5 種系統(tǒng)往往會(huì)結(jié)合使用忍宋,以構(gòu)建一個(gè)具有最終一致性的分布式系統(tǒng)。實(shí)際上风罩,不只是分布式系統(tǒng)使用最終一致性糠排,關(guān)系型數(shù)據(jù)庫在某個(gè)功能上,也是使用最終一致性的超升,比如備份入宦,數(shù)據(jù)庫的復(fù)制過程是需要時(shí)間的,這個(gè)復(fù)制過程中室琢,業(yè)務(wù)讀取到的值就是舊的乾闰。當(dāng)然,最終還是達(dá)成了數(shù)據(jù)一致性盈滴。這也算是一個(gè)最終一致性的經(jīng)典案例涯肩。 5. 總結(jié)
總的來說,BASE 理論面向的是大型高可用可擴(kuò)展的分布式系統(tǒng),和傳統(tǒng)事務(wù)的 ACID 是相反的,它完全不同于 ACID 的強(qiáng)一致性模型鸥咖,而是通過犧牲強(qiáng)一致性來獲得可用性,并允許數(shù)據(jù)在一段時(shí)間是不一致的航背。
作者:莫那魯?shù)?/p>
出處: 博客園:http://www.cnblogs.com/stateis0/ 個(gè)人博客: thinkinjava.cn</pre>
[](javascript:void(0); "復(fù)制代碼")
上面的說明,非常的棒! 但是我也看到了,即使 BASE 理論咬展, 同樣是不方便做 量化的,完全不同于 數(shù)學(xué)瞒斩、 物理或者化學(xué)的 哪些公式和理論挚赊。( 至少是沒有看到 相關(guān)的 量化的 實(shí)際方案) 比如PH 理論, 我們至少是有個(gè)PH值 來進(jìn)行測(cè)量的济瓢。 BASE 有嗎? 可以給BA 打分嗎妹卿? 可以給S 或者 E 打分嗎旺矾? 估計(jì)還是操作上的 不方便蔑鹦, 這種打分的意義也是不大的, 這個(gè)系統(tǒng)的打分箕宙,對(duì)于其他不同的系統(tǒng)嚎朽,是沒有參考意義的。 因?yàn)?BASE 的程度柬帕, 基本上哟忍,完全是 依據(jù)具體業(yè)務(wù) 而定的。
探討
盡管不能量化陷寝,但我們?nèi)孕枰谋M量的探索锅很。我們還需要探討一下的是;
什么情況是滿足BA 的凤跑?
BA 就是主要功能可用爆安,不管網(wǎng)絡(luò)問題也好節(jié)點(diǎn)掛掉也好, 我們需要保證關(guān)鍵的主要的業(yè)務(wù) 照常運(yùn)行仔引, 否則客戶 或者老板就罵人了扔仓! 什么是關(guān)鍵、主要 業(yè)務(wù)咖耘? 跟業(yè)務(wù)主管去討論吧翘簇!
什么情況是滿足S 的?
(這里說滿足儿倒, 不知道是否恰當(dāng)版保, 因?yàn)镾 是比BA 還要虛的)
“允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài)” ,到底是幾個(gè)狀態(tài)义桂?隨便什么狀態(tài)找筝,隨便幾個(gè)狀態(tài),只要滿足Ba 就可以了慷吊。 所以說袖裕, BA 是必須滿足的, 否則 一切都沒有了意義8绕俊急鳄!
什么情況是滿足E 的?
E堰酿, 最終一致性疾宏, 其實(shí)相對(duì)強(qiáng)一致性C 而言的。 我們知道完美C 是非常難的触创,那么可以盡量的滿足部分的C坎藐,但是,部分C 肯定是不夠的,甚至是 可能有問題的岩馍! 因?yàn)椋?沒有人喜歡部分C碉咆,我們都喜歡完美C, 它簡(jiǎn)單容易理解蛀恩, 客戶體驗(yàn)好疫铜。 而E 是對(duì)完美C的一個(gè)迂回, 犧牲了部分的客戶體驗(yàn)( 其實(shí)也就是 需要讓客戶等待一些時(shí)間双谆, 等待之后 就是他們想要的 “正確的數(shù)據(jù)”)壳咕, 如果不考慮時(shí)間因素, 其實(shí)E 和C 是一樣的顽馋。 當(dāng)然谓厘, 具體多少 “等待時(shí)間” (其實(shí)就是 所謂的 “不一致窗口”), 又是依情況而定的趣避。
以客戶端為中心分類
總的來說庞呕,BA是我們的必須要達(dá)成的目標(biāo), S 是手段程帕,E 是一種狀態(tài)住练。
最終一致性 又分了很多種,(這幫專家真是夠閑的了愁拭。讲逛。):
分類是為了更好的 討論, 不至于你說東他說西岭埠, 所以這種分類 其實(shí)是很有好處的盏混。
不過感覺 莫那魯?shù)?沒有說清楚 E的這個(gè)分類。 我這里需要再補(bǔ)充幾點(diǎn)惜论。
這里的一致性 (這里的一致性许赃, 都是強(qiáng)一致性) ,是針對(duì)于 具體的某個(gè)客戶端而言的馆类, 是 以客戶端為中心的混聊, 不考慮服務(wù)端的 各種情況, 只管客戶端 看到的內(nèi)容的 一致性乾巧。 比如句喜,客戶在某個(gè)瀏覽器做了各種操作,比如隨便的讀和寫沟于。
然后呢咳胃, 分類如下:
因果一致性:
什么是因果一致性。我們假設(shè)一個(gè)key-value數(shù)據(jù)存儲(chǔ)旷太,有兩個(gè)基本操作: put(key,val) 和 get(key)=val. 這個(gè)類似于在單機(jī)的共享內(nèi)存系統(tǒng)中的讀操作和寫操作(可參考:Go語言Goroutine與Channel內(nèi)存模型)展懈。
我們約定遵循下面三個(gè)規(guī)則表示潛在一致性,用符號(hào)表達(dá) ->:
- 在同一執(zhí)行線程:. 如果a 和 b 是一個(gè)執(zhí)行線程中的兩個(gè)操作,如果操作a發(fā)生在操作b之前存崖,那么a ->b榄攀;
- 不同線程Gets From. 如果 a是一個(gè)put放入操作,且b是一個(gè)獲得操作金句,能返回被a放入的寫操作結(jié)果值,那么a->b吕嘀;
- 傳遞性Transitivity. 對(duì)于操作a, b, 和 c, if a -> b 且 b -> c, 那么 a -> c.
這些規(guī)則在同一個(gè)線程內(nèi)的操作之間以及在與數(shù)據(jù)存儲(chǔ)交互的不同線程的操作之間創(chuàng)建了潛在的因果關(guān)系违寞,這個(gè)模型,并不允許線程直接通訊偶房,而是通過數(shù)據(jù)存儲(chǔ)進(jìn)行通訊趁曼。
在一致性的要求上,又比順序一致性降低了:它僅要求有因果關(guān)系的操作順序得到保證棕洋,
非因果關(guān)系的操作順序則無所謂挡闰。
因果相關(guān)的要求是這樣的:
本地順序:本進(jìn)程中,事件執(zhí)行的順序即為本地因果順序掰盘。
異地順序:如果讀操作返回的是寫操作的值摄悯,那么該寫操作在順序上一定在讀操作之前。
閉包傳遞:和時(shí)鐘向量里面定義的一樣愧捕,如果a->b奢驯,b->c,那么肯定也有a->c
說了這么多次绘,可能我們還是比較懵逼瘪阁。 其實(shí)可以這么理解,假設(shè)客戶端兩個(gè)操作邮偎,o2 依賴于 o1管跺,這是怎么一種操作呢? 就是說禾进, o1 不發(fā)生豁跑,o2就不可能發(fā)生, 這就是所謂的“因果” (終于跟佛教扯上了一些關(guān)系了懊酢7啡啤), 比如壶愤,發(fā)帖子的操作淑倾,完成之后,才可能有 對(duì)這個(gè)帖子的 評(píng)論操作征椒。 這個(gè)看起來是 廢話娇哆, 但是,分布式系統(tǒng)中, 確實(shí)有可能出現(xiàn)違背 因果關(guān)系的 情況碍讨。 因果關(guān)系是 符合我們的 直觀理解的治力, 看起來是自然而然的, 違背了的話勃黍, 就會(huì)覺得TM 簡(jiǎn)直亂套了宵统,不可思議!
讀你所寫一致性:
它是因果一致性的 非常直觀的特例覆获, 就是說寫操作完成之后马澈, 我才有可能把 寫的內(nèi)容 讀出來(這簡(jiǎn)直就是廢話啊弄息! 但是分布式系統(tǒng)可能出現(xiàn)違背痊班, 所以,也要把它列出來)摹量。它要求 我自己寫的內(nèi)容涤伐, 我自己是一定 立即 能夠讀出來的! 但是呢缨称, 其他客戶端寫的內(nèi)容凝果, 就不給與保證了! 這樣的情況是有一點(diǎn)合理性的具钥,某些場(chǎng)景客戶容易理解也可以接受豆村。 客戶 或 那個(gè)場(chǎng)景就 不是要求非常的實(shí)時(shí),不是非常高骂删。我們可以做一定的設(shè)計(jì)掌动, 然后滿足這樣子的需求, 比如 用戶閱讀某個(gè)帖子宁玫, 然后很多評(píng)論粗恢, 同時(shí)很多人還在繼續(xù)評(píng)論, 然后用戶自己也發(fā)表了評(píng)論欧瘪,那么這個(gè)時(shí)候眷射,雖然有很多新的評(píng)論, 但用戶只需要讀到自己的寫的評(píng)論就好了佛掖, 其他的看不到也不要緊妖碉, 用戶怎么知道瞬間 新的評(píng)論又出現(xiàn)了呢? 這個(gè)是無法感知的芥被, 知道了新評(píng)論 當(dāng)然用戶體驗(yàn)更好欧宜, 但是不知道也不要緊啊拴魄! 但是呢冗茸, 如果 他自己剛剛寫的評(píng)論席镀, 如果都看不到, 那就會(huì)覺得不可思議啊夏漱, 坑爹昂阑濉! 讀你所寫一致性 如果不能滿足挂绰,那TM 簡(jiǎn)直不可思議屎篱, 肯定是 不可取的。
會(huì)話一致性:
讀你所寫一致性的特例葵蒂,相當(dāng)于在同一個(gè)會(huì)話內(nèi)保證讀你所寫一致性芳室,但是不同的會(huì)話不保證。 就是說刹勃, 客戶做了各種讀寫操作,然后退出了 登錄后嚎尤, 然后重新登錄荔仁, 然后就可能 不能讀到之前會(huì)話寫的數(shù)據(jù)了! 也就是不保證數(shù)據(jù)一致性了Q克馈乏梁! 這種情況有點(diǎn) 費(fèi)解, 它做了更多的條件限制关贵,其體驗(yàn)遇骑, 當(dāng)然是比 讀你所寫一致性 更差!
單調(diào)讀一致性:
它是指如果一個(gè)節(jié)點(diǎn)從系統(tǒng)中讀取出一個(gè)數(shù)據(jù)項(xiàng)的某個(gè)值后揖曾,那么系統(tǒng)對(duì)于該節(jié)點(diǎn)后續(xù)的任何數(shù)據(jù)訪問都不應(yīng)該返回更舊的值落萎。 潛在的臺(tái)詞是 客戶端1從節(jié)點(diǎn)1寫入的值, 客戶端2從節(jié)點(diǎn)2 也應(yīng)該能夠“盡量”讀出來 炭剪。保證讀操作的序列化练链。 http://dict.youdao.com/w/eng/%E5%8D%95%E8%B0%83%E8%AF%BB%E4%B8%80%E8%87%B4%E6%80%A7/ 的解釋是: 單調(diào)讀一致性(Monotonic read consistency):如果進(jìn)程已經(jīng)看到過數(shù)據(jù)對(duì)象的某個(gè)值,那么任何后續(xù)訪問都不會(huì)返回在那個(gè)值之前的值奴拦。 還是有些費(fèi)解媒鼓。 其實(shí)可以這么理解,系統(tǒng)給客戶端 提供的數(shù)據(jù) 是比較新的错妖,是不會(huì)返回“更舊的” 數(shù)據(jù)绿鸣, 也就是說, 雖然 我系統(tǒng)返回給客戶端的 可能不是最新的暂氯, 但是已經(jīng)是 比較新的了潮模。 像kafka 就有這種情況, 同一個(gè)partition 的不同分片 盡量提供新的數(shù)據(jù)株旷, 但是 不保證是 最新的( 當(dāng)然再登, 如果客戶端訪問的是 更舊的分片尔邓,那么也有可能返回 更舊的數(shù)據(jù), 系統(tǒng)應(yīng)該避免這種情況)锉矢。 這個(gè)其實(shí)客戶也 還比較容易接受梯嗽。
單調(diào)寫一致性:
指一個(gè)系統(tǒng)要能夠保證來自同一個(gè)節(jié)點(diǎn)的寫操作被順序的執(zhí)行。它保證寫操作的序列化沽损。不知道莫道的這個(gè)解釋是否有誤灯节, 我感覺是比較費(fèi)解。我認(rèn)為的下面的解釋比較好:
<pre>一個(gè)進(jìn)程對(duì)數(shù)據(jù)項(xiàng)X執(zhí)行的寫操作必須在該進(jìn)程對(duì)數(shù)據(jù)項(xiàng)X執(zhí)行的任何后續(xù)寫操作之前完成绵估。單調(diào)寫一致性同以數(shù)據(jù)為中心的FIFO一致性類似炎疆,本質(zhì)是同一進(jìn)程上執(zhí)行的寫操作必須在任何地方以正確的順序執(zhí)行。單調(diào)寫一執(zhí)行保證在一個(gè)副本上執(zhí)行數(shù)據(jù)更新時(shí)国裳,在此之前(其它副本上執(zhí)行的)的所有數(shù)據(jù)更新都將首先執(zhí)行形入。
http://www.reibang.com/p/dcead11b3da9 </pre>
其實(shí)就算是, 客戶端 隨意的讀寫缝左, 可能 先是寫(w1操作) 分布式系統(tǒng)的A 節(jié)點(diǎn)亿遂, 然后寫(w2操作) B 節(jié)點(diǎn)。 這個(gè)兩個(gè)寫是有順序的渺杉, 那么我們期望蛇数,系統(tǒng)的記錄也是 有序的, 即 必須先 在整個(gè)系統(tǒng)內(nèi)部 完成 w1是越, 然后才能完成w2耳舅。 完成w1 意味著, 分布式系統(tǒng)中所有的節(jié)點(diǎn) 的當(dāng)前數(shù)據(jù)備份 都是 w1的數(shù)值倚评。 同理w2 也是這樣浦徊。 這樣的要求, 看起來平平常常天梧, 但是 對(duì)于一個(gè)分布式系統(tǒng)而言辑畦, 可能也是一個(gè)巨大的挑戰(zhàn)呢! 為了保證這種 單調(diào)寫腿倚, 我們需要復(fù)雜的算法纯出, PAXOS 就是這樣的算法, 能夠嚴(yán)格滿足 單調(diào)寫 等 特性敷燎。當(dāng)然暂筝, 實(shí)際情況, 我們可能不需要“嚴(yán)格的” 實(shí)現(xiàn) PAXOS硬贯, 也不是因?yàn)殡y以實(shí)現(xiàn)焕襟, 而是考慮性能 等綜合因素。
在我之前的想法中饭豹, 單調(diào)寫 其實(shí) 考慮了 網(wǎng)絡(luò)的延遲和亂序啊鸵赖。 其實(shí)那 是分布式系統(tǒng)外部的事情务漩, 跟分布式系統(tǒng)無關(guān), 也無法控制它褪。系統(tǒng)都是有邊界的饵骨,那些 只能在傳輸或者 網(wǎng)絡(luò)層面控制。在此不做討論了茫打。
單調(diào)寫居触, 其實(shí)是針對(duì)那些可以 多個(gè)節(jié)點(diǎn)同時(shí)寫的 分布式系統(tǒng), 這個(gè)看起來更像是 ZK 做的事情老赤, ZK 的各個(gè)節(jié)點(diǎn)是可以 允許 你隨便寫的轮洋。 像有些系統(tǒng), 它讀寫分離了抬旺,只有一個(gè)寫的節(jié)點(diǎn)(即master)弊予, 那么單調(diào)寫是 自動(dòng)滿足的吧!
小結(jié)
如上大圖 所示开财,前面的各種一致性 是有一定的 包含關(guān)系的块促。最終一致性是 弱一致性的子集,最終一致性包含各種情況床未,其中因果 包含了 讀你所寫, 讀你所寫 包含了 會(huì)話一致性振坚。
在具體的分布式系統(tǒng) 或我們自己的 實(shí)現(xiàn)中薇搁,我們可以做一些取舍來實(shí)現(xiàn)其中某些一致性。 如果保證每次同一個(gè)客戶端的的讀寫操作都 落到 分布式系統(tǒng)的同一個(gè) 節(jié)點(diǎn)渡八, 那么就容易實(shí)現(xiàn) “讀你所寫”啃洋, 單調(diào)一致性也是這樣的。 也就是說 : 如果每次都是同一臺(tái)服務(wù)器屎鳍,那么就比較容易保證“讀己之所寫”一致性和單調(diào)一致性宏娄。(單調(diào)一致性 會(huì)復(fù)雜一些, 如果依次發(fā)生ABC寫操作逮壁,分別發(fā)生于Node 1孵坚、2、3窥淆, 那么 從node1 讀取可能讀取到 ABC卖宠, 也可能是 ACB 或者其他情況,ACB肯定不是 單調(diào)一致性忧饭, 也不是我們所需要的)
參考: