日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分布式的数据一致性

發(fā)布時(shí)間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式的数据一致性 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.前序

數(shù)據(jù)的一致性和系統(tǒng)的性能是每個(gè)分布式系統(tǒng)都需要考慮和權(quán)衡的問(wèn)題。一致性的級(jí)別如下:
1.強(qiáng)一致性
這種一致性級(jí)別是最符合用戶直覺(jué)的,它要求系統(tǒng)寫(xiě)入什么,讀出來(lái)的也會(huì)是什么,用戶體驗(yàn)好,但實(shí)現(xiàn)起來(lái)往往對(duì)系統(tǒng)的性能影響大
2.弱一致性
這種一致性級(jí)別約束了系統(tǒng)在寫(xiě)入成功后,不承諾立即可以讀到寫(xiě)入的值,也不久承諾多久之后數(shù)據(jù)能夠達(dá)到一致,但會(huì)盡可能地保證到某個(gè)時(shí)間級(jí)別(比如秒級(jí)別)后,數(shù)據(jù)能夠達(dá)到一致?tīng)顟B(tài)
3、最終一致性
最終一致性是弱一致性的一個(gè)特例,系統(tǒng)會(huì)保證在一定時(shí)間內(nèi),能夠達(dá)到一個(gè)數(shù)據(jù)一致的狀態(tài)。這里之所以將最終一致性單獨(dú)提出來(lái),是因?yàn)樗侨跻恢滦灾蟹浅M瞥绲囊环N一致性模型,也是業(yè)界在大型分布式系統(tǒng)的數(shù)據(jù)一致性上比較推崇的模型

一.CAP原則(https://en.wikipedia.org/wiki/CAP_theorem)
CAP原則:指的是在一個(gè)分布式系統(tǒng)中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區(qū)容錯(cuò)性),三者不可得兼。

注意:此處的Consistency(一致性)為強(qiáng)一致性;

* 一個(gè)分布式系統(tǒng)無(wú)法同時(shí)滿足以上三個(gè)需求,因此在實(shí)際運(yùn)用時(shí),我們就要拋棄其中一項(xiàng).
* CAP定理應(yīng)用:
1. 放棄P:放棄P就意味著放棄了擴(kuò)展性.就是把所有數(shù)據(jù)放在一個(gè)分布式節(jié)點(diǎn)上.
2. 放棄A:系統(tǒng)遇到故障時(shí),在等待時(shí)間內(nèi)系統(tǒng)無(wú)法對(duì)外提供正常服務(wù),即不可用.
3. 放棄C:放棄強(qiáng)一致性,而保持?jǐn)?shù)據(jù)的最終一致性.引入“時(shí)間窗口”概念.
* 對(duì)于分布式系統(tǒng)而言,網(wǎng)絡(luò)問(wèn)題是必定會(huì)出現(xiàn)的異常情況,因?yàn)镻是一個(gè)分布式系統(tǒng)必須面對(duì)和解決的問(wèn)題.
* 所以往往要根據(jù)業(yè)務(wù)權(quán)衡C和A之間的選擇.
Consistency(一致性)和 Availability(可用性)的共存問(wèn)題?
一致性與可用性為什么不能同時(shí)成立?其實(shí)答案很簡(jiǎn)單,由于Partition tolerance(分區(qū)容錯(cuò)性)的存在,節(jié)點(diǎn)間的通行可能會(huì)失敗。
舉個(gè)例子:
假設(shè)微服務(wù)A異地部署,東莞區(qū)域?yàn)锳1,深圳區(qū)域?yàn)锳2。如果要保證A1的一致性,那么在A2執(zhí)行寫(xiě)操作的時(shí)候,鎖定A1的讀操作和寫(xiě)操作。只有在數(shù)據(jù)同步后,才重新開(kāi)放讀寫(xiě)權(quán)限。鎖定期間,A1不能讀寫(xiě)的,對(duì)于Availability(可用性)是不成立。
如果要保證A1的可用性,那么勢(shì)必不能鎖定A1,這樣Consistency(一致性)肯定是不成立。

如下公共組件:
Zookeeper、ETCD符合CP設(shè)計(jì);Eureka符合AP設(shè)計(jì);

二.BASE理論(https://en.wikipedia.org/wiki/Eventual_consistency)
BASE理論由eBay的架構(gòu)師Dan Pritchett提出,BASE理論是對(duì)CAP理論的延伸,核心思想是即使無(wú)法做到強(qiáng)一致性,應(yīng)用應(yīng)該可以采用合適的方式達(dá)到最終一致性。BASE是指基本可用(Basically Available)、軟狀態(tài)( Soft State)、最終一致性( Eventual Consistency)。

●基本可用(Basically Available)
分布式系統(tǒng)出現(xiàn)故障的時(shí)候,允許損失部分可用性,即保證核心可用。
●軟狀態(tài)( Soft State)
允許系統(tǒng)存在中間狀態(tài),并且該中間狀態(tài)不會(huì)影響系統(tǒng)整體可用性。分布式存儲(chǔ)中一般一份數(shù)據(jù)至少會(huì)有三個(gè)副本,允許不同節(jié)點(diǎn)間副本同步的延時(shí),這就是軟狀態(tài)的體現(xiàn)。
●最終一致性( Eventual Consistency)
分布式系統(tǒng)中所有的副本經(jīng)過(guò)一定的時(shí)間后,最終能夠達(dá)到一致的狀態(tài)。

最終一致性分為5種:
1. 因果一致性(Causal consistency)
指的是:如果節(jié)點(diǎn) A 在更新完某個(gè)數(shù)據(jù)后通知了節(jié)點(diǎn) B,那么節(jié)點(diǎn) B 之后對(duì)該數(shù)據(jù)的訪問(wèn)和修改都是基于 A 更新后的值。于此同時(shí),和節(jié)點(diǎn) A 無(wú)因果關(guān)系的節(jié)點(diǎn) C 的數(shù)據(jù)訪問(wèn)則沒(méi)有這樣的限制。

2. 讀己之所寫(xiě)(Read your writes)
這種就很簡(jiǎn)單了,節(jié)點(diǎn) A 更新一個(gè)數(shù)據(jù)后,它自身總是能訪問(wèn)到自身更新過(guò)的最新值,而不會(huì)看到舊值。其實(shí)也算一種因果一致性。

3. 會(huì)話一致性(Session consistency)
會(huì)話一致性將對(duì)系統(tǒng)數(shù)據(jù)的訪問(wèn)過(guò)程框定在了一個(gè)會(huì)話當(dāng)中:系統(tǒng)能保證在同一個(gè)有效的會(huì)話中實(shí)現(xiàn) “讀己之所寫(xiě)” 的一致性,也就是說(shuō),執(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ù)訪問(wèn)都不應(yīng)該返回更舊的值。

5. 單調(diào)寫(xiě)一致性(Monotonic write consistency)
指一個(gè)系統(tǒng)要能夠保證來(lái)自同一個(gè)節(jié)點(diǎn)的寫(xiě)操作被順序的執(zhí)行。

然而,在實(shí)際的實(shí)踐中,這 5 種系統(tǒng)往往會(huì)結(jié)合使用,以構(gòu)建一個(gè)具有最終一致性的分布式系統(tǒng)。實(shí)際上,不只是分布式系統(tǒng)使用最終一致性,關(guān)系型數(shù)據(jù)庫(kù)在某個(gè)功能上,也是使用最終一致性的,比如備份,數(shù)據(jù)庫(kù)的復(fù)制過(guò)程是需要時(shí)間的,這個(gè)復(fù)制過(guò)程中,業(yè)務(wù)讀取到的值就是舊的。當(dāng)然,最終還是達(dá)成了數(shù)據(jù)一致性。這也算是一個(gè)最終一致性的經(jīng)典案例。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lovegrace/p/10366162.html

總結(jié)

以上是生活随笔為你收集整理的分布式的数据一致性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。