新聞中心
為什么說(shuō),CAP是分布式理論的基礎(chǔ)?
作者:架構(gòu)師之路 2020-12-14 14:24:07
前端
分布式 分布式系統(tǒng)非常關(guān)注三個(gè)指標(biāo):數(shù)據(jù)一致性、系統(tǒng)可用性和節(jié)點(diǎn)連通性與擴(kuò)展性,這三個(gè)指標(biāo)的關(guān)系如何,今天來(lái)聊一聊分布式理論的基礎(chǔ)CAP。

憑借整站使用html5的創(chuàng)新體驗(yàn)、定制設(shè)計(jì)、設(shè)計(jì)團(tuán)隊(duì)積累與透明式的服務(wù)過(guò)程,符合行業(yè)特點(diǎn),專屬顧問(wèn)根據(jù)企業(yè)產(chǎn)品,消費(fèi)群體屬性,準(zhǔn)確定位;設(shè)計(jì)師以目標(biāo)客戶為中心,以突出品牌官網(wǎng)特性為宗旨,定制專屬網(wǎng)站建設(shè)設(shè)計(jì)方案。
分布式系統(tǒng)非常關(guān)注三個(gè)指標(biāo):
- 數(shù)據(jù)一致性;
- 系統(tǒng)可用性;
- 節(jié)點(diǎn)連通性與擴(kuò)展性;
這三個(gè)指標(biāo)的關(guān)系如何,今天來(lái)聊一聊分布式理論的基礎(chǔ)CAP。
什么是數(shù)據(jù)一致性?
數(shù)據(jù)“強(qiáng)一致性”,是希望系統(tǒng)只讀到最新寫入的數(shù)據(jù),例如:通過(guò)單點(diǎn)串行化的方式,就能夠達(dá)到這個(gè)效果。
關(guān)于session一致性,DB主從一致性,DB雙主一致性,DB與Cache一致性,數(shù)據(jù)冗余一致性,消息時(shí)序一致性,分布式事務(wù)一致性,庫(kù)存扣減一致性,都存在類似的一致性問(wèn)題。
什么可用性?
如果系統(tǒng)每運(yùn)行100個(gè)時(shí)間單位,會(huì)有1個(gè)時(shí)間單位無(wú)法提供服務(wù),則說(shuō)系統(tǒng)的可用性是99%。
可用性和可靠性是比較容易搞混的兩個(gè)指標(biāo),以一臺(tái)取款機(jī)為例:
- 正確的輸入,能夠取到正確的錢,表示系統(tǒng)可靠;
- 取款機(jī)7*24小時(shí)提供服務(wù),表示系統(tǒng)可用;
保證系統(tǒng)高可用的方法是:
- 冗余;
- 故障自動(dòng)轉(zhuǎn)移;
什么是連通性與擴(kuò)展性?
分布式系統(tǒng),往往有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)之間,都不是完全獨(dú)立的,需要相互通信,當(dāng)發(fā)生節(jié)點(diǎn)無(wú)法聯(lián)通時(shí),數(shù)據(jù)是否還能保持一致,系統(tǒng)要如何進(jìn)行容錯(cuò)處理,是需要考慮的。
同時(shí),連通性和擴(kuò)展性緊密相關(guān),想要加機(jī)器擴(kuò)展性能,必須有良好的連通性。當(dāng)一個(gè)節(jié)點(diǎn)脫離系統(tǒng),系統(tǒng)就出現(xiàn)問(wèn)題,往往意味著系統(tǒng)是無(wú)法擴(kuò)展的。
什么是CAP定理?
CAP定理,是對(duì)上述分布式系統(tǒng)的三個(gè)特性,進(jìn)行了歸納:
- 一致性(Consistency);
- 可用性(Availability);
- 分區(qū)容忍性(Partition Tolerance);
并且,定理指出,在系統(tǒng)實(shí)現(xiàn)時(shí),這三者最多兼顧兩點(diǎn)。
一致性,可用性,多節(jié)點(diǎn)擴(kuò)展性三者只能取其二,既然加鎖已經(jīng)加上,常見(jiàn)的最佳工程架構(gòu)實(shí)踐是什么呢?
互聯(lián)網(wǎng),最常見(jiàn)的實(shí)踐是這樣的:
- 節(jié)點(diǎn)連通性,多節(jié)點(diǎn)擴(kuò)展性,連通性異常的處理必須保證,滿足P;
- 一致性C與可用性A一般二選一;
- 選擇一致性C,舉例:傳統(tǒng)單庫(kù)水平切分,就是這類選型的典型;
- 選擇可用性A,舉例:雙主庫(kù)同步高可用,就是這類選型的典型;
強(qiáng)一致很難怎么辦?
單點(diǎn)串行化,雖然能保證“強(qiáng)一致”,但對(duì)系統(tǒng)的并發(fā)性能,以及高可用有較大影響,互聯(lián)網(wǎng)的玩法,更多的是“最終一致性”,短期內(nèi)未必讀到最新的數(shù)據(jù),但在一個(gè)可接受的時(shí)間窗口之后,能夠讀到最新的數(shù)據(jù)。
例如:數(shù)據(jù)庫(kù)主從同步,從庫(kù)上的數(shù)據(jù),就是一個(gè)最終的一致。
總結(jié)
- CAP可以理解為一致性,可用性,聯(lián)通與擴(kuò)展性;
- CAP三者只能取其二;
- 最常見(jiàn)的實(shí)踐是AP+最終一致性;
【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
當(dāng)前題目:為什么說(shuō),CAP是分布式理論的基礎(chǔ)?
本文路徑:http://fisionsoft.com.cn/article/dhcieii.html


咨詢
建站咨詢
