99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊一聊分布式系統(tǒng)的CAP理論

汽車玩家 ? 來(lái)源:cnblogs ? 作者:cnblogs ? 2020-05-03 18:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

分布式系統(tǒng)當(dāng)中有一個(gè)著名的CAP理論,它也是分布式系統(tǒng)理論的基礎(chǔ)。

CAP理論最早發(fā)表于2000年,由加州伯克利的教授首先在ACM PODC會(huì)議上提出猜想,兩年之后,被麻省理工學(xué)院的教授Seth Gilbert和Nancy Lynch從理論上證明。從此之后,它成了分布式系統(tǒng)領(lǐng)域的公認(rèn)定理。

聊一聊分布式系統(tǒng)的CAP理論

今天這篇文章就和大家聊聊這個(gè)大名鼎鼎的CAP理論。

CAP理論描述起來(lái)其實(shí)很簡(jiǎn)單,它說(shuō)的是一個(gè)分布式系統(tǒng)最多只能滿足C(一致性)、A(可用性)和P(分區(qū)性)這三者當(dāng)中的兩個(gè)。我們先來(lái)看一下這三項(xiàng)分別代表了什么。

Consistency 一致性

分布式系統(tǒng)當(dāng)中的一致性指的是所有節(jié)點(diǎn)的數(shù)據(jù)一致,或者說(shuō)是所有副本的數(shù)據(jù)一致。用英文描述是:All the nodes see the same data at the same time。它和數(shù)據(jù)庫(kù)事務(wù)中的一致性是兩碼事,在我們之前的文章里,曾經(jīng)詳細(xì)描述過(guò)分布式系統(tǒng)中的各種一致性模型,感興趣的同學(xué)可以點(diǎn)擊這里。

我們可以將一致性一分為二,分別從客戶端和服務(wù)端進(jìn)行探究。對(duì)于客戶端而言,并不關(guān)心后端的實(shí)現(xiàn),也不關(guān)心后端的節(jié)點(diǎn)運(yùn)行情況。唯一只關(guān)心多次并發(fā)訪問(wèn)下都能獲得準(zhǔn)確的符合預(yù)期的結(jié)果。比如用戶多次點(diǎn)擊付款,也只會(huì)付款一次,余額無(wú)論什么時(shí)候查詢都是當(dāng)下最新的值。

而服務(wù)端關(guān)心的是會(huì)引發(fā)數(shù)據(jù)變更的請(qǐng)求過(guò)來(lái),能夠及時(shí)準(zhǔn)確地同步到所有的節(jié)點(diǎn)和副本,并且考慮可能會(huì)出現(xiàn)的網(wǎng)絡(luò)以及通信問(wèn)題,保證極端情況下依舊不會(huì)產(chǎn)生錯(cuò)誤。

在分布式系統(tǒng)當(dāng)中,針對(duì)不同情況以及不同要求下的一致性,設(shè)計(jì)了多種不同的模型。我們可以簡(jiǎn)單做一個(gè)總結(jié),將它們分為三類:

1. 要求當(dāng)下更新成功的數(shù)據(jù)立即生效,在后續(xù)的訪問(wèn)當(dāng)中都能返回最新的結(jié)果。這是強(qiáng)一致性。

2. 如果能容忍在更新發(fā)生之后,部分情況無(wú)法訪問(wèn)到最新數(shù)據(jù),這是弱一致性。

3. 如果能容忍更新后一段時(shí)間內(nèi)無(wú)法訪問(wèn)到最新數(shù)據(jù),但最終可以保證結(jié)果準(zhǔn)確,這是最終一致性。

在CAP理論當(dāng)中,我們說(shuō)的無(wú)法同時(shí)滿足的一致性指的是強(qiáng)一致性。

Availability 可用性

可用性指的是:Reads and writes always succeed. 也就是說(shuō)系統(tǒng)一直可用,而且服務(wù)一直保持正常。

一個(gè)高可用性的分布式系統(tǒng),必須對(duì)用戶的每一個(gè)請(qǐng)求做出響應(yīng)。不可以出現(xiàn)無(wú)法訪問(wèn)或者是響應(yīng)超時(shí)等影響用戶體驗(yàn)的情況。在一個(gè)分布式系統(tǒng)當(dāng)中,任何一個(gè)節(jié)點(diǎn)的不穩(wěn)定,都有可能影響系統(tǒng)的可用性,比如數(shù)據(jù)庫(kù)服務(wù)器、負(fù)載均衡,web服務(wù)器承載等等。為了量化系統(tǒng)的可用性,我們通常使用系統(tǒng)停機(jī)時(shí)間這個(gè)指標(biāo)。即在一年時(shí)間內(nèi),系統(tǒng)停機(jī)的總時(shí)長(zhǎng)。

聊一聊分布式系統(tǒng)的CAP理論

據(jù)說(shuō)淘寶可以做到5個(gè)9,也就是99.999%的時(shí)間內(nèi)可用。算下來(lái)全年系統(tǒng)停機(jī)的時(shí)間不會(huì)超過(guò)5分鐘,這是非常難以做到的。

Partition Tolerance 分區(qū)容錯(cuò)性

分區(qū)容錯(cuò)性指的是:System continues operating despire arbitrary message loss or failure of part of the system. 翻譯過(guò)來(lái)就是說(shuō)系統(tǒng)在遇到一些節(jié)點(diǎn)或者網(wǎng)絡(luò)分區(qū)故障的時(shí)候,仍然能夠提供滿足一致性和可用性的服務(wù)。

分區(qū)容錯(cuò)性和拓展性息息相關(guān),因?yàn)樵酱蟮姆植际较到y(tǒng)越有可能出現(xiàn)機(jī)器宕機(jī),網(wǎng)絡(luò)阻塞等情況。即使這些意外情況發(fā)生,系統(tǒng)仍然能保持穩(wěn)定是系統(tǒng)拓展的前提。在分布式系統(tǒng)當(dāng)中出現(xiàn)的問(wèn)題可能性很多,既可能出現(xiàn)部分機(jī)器宕機(jī),也有可能出現(xiàn)內(nèi)網(wǎng)阻隔,使得整個(gè)集群被拆分成互相不能通信的幾個(gè)部分。分區(qū)容錯(cuò)性需要保證即使這些情況發(fā)生,系統(tǒng)也一樣可以保證一致性和可用性。

舉個(gè)例子,阿里經(jīng)常做機(jī)房斷電實(shí)驗(yàn),實(shí)驗(yàn)的時(shí)候直接把一個(gè)機(jī)房的電源切斷,觀察這個(gè)時(shí)候系統(tǒng)是否仍然能夠保持穩(wěn)定。

CAP定理的證明

關(guān)于CAP這三個(gè)特性我們就介紹完了,接下來(lái)我們?cè)囍C明一下為什么CAP不能同時(shí)滿足。

為了簡(jiǎn)化證明的過(guò)程,我們假設(shè)整個(gè)集群里只有兩個(gè)N1和N2兩個(gè)節(jié)點(diǎn),如下圖:

聊一聊分布式系統(tǒng)的CAP理論

N1和N2當(dāng)中各自有一個(gè)應(yīng)用程序AB和數(shù)據(jù)庫(kù),當(dāng)系統(tǒng)滿足一致性的時(shí)候,我們認(rèn)為N1和N2數(shù)據(jù)庫(kù)中的數(shù)據(jù)保持一致。在滿足可用性的時(shí)候,我們認(rèn)為無(wú)論用戶訪問(wèn)N1還是N2,都可以獲得正確的結(jié)果,在滿足分區(qū)容錯(cuò)性的時(shí)候,我們認(rèn)為無(wú)論N1還是N2宕機(jī)或者是兩者的通信中斷,都不影響系統(tǒng)的運(yùn)行。

我們假設(shè)一種極端情況,假設(shè)某個(gè)時(shí)刻N(yùn)1和N2之間的網(wǎng)絡(luò)通信突然中斷了。如果系統(tǒng)滿足分區(qū)容錯(cuò)性,那么顯然可以支持這種異常。問(wèn)題是在此前提下,一致性和可用性是否可以做到不受影響呢?

我們做個(gè)假象實(shí)驗(yàn),如下圖,突然某一時(shí)刻N(yùn)1和N2之間的關(guān)聯(lián)斷開:

聊一聊分布式系統(tǒng)的CAP理論

有用戶向N1發(fā)送了請(qǐng)求更改了數(shù)據(jù),將數(shù)據(jù)庫(kù)從V0更新成了V1。由于網(wǎng)絡(luò)斷開,所以N2數(shù)據(jù)庫(kù)依然是V0,如果這個(gè)時(shí)候有一個(gè)請(qǐng)求發(fā)給了N2,但是N2并沒(méi)有辦法可以直接給出最新的結(jié)果V1,這個(gè)時(shí)候該怎么辦呢?

這個(gè)時(shí)候無(wú)法兩種方法,一種是將錯(cuò)就錯(cuò),將錯(cuò)誤的V0數(shù)據(jù)返回給用戶。第二種是阻塞等待,等待網(wǎng)絡(luò)通信恢復(fù),N2中的數(shù)據(jù)更新之后再返回給用戶。顯然前者犧牲了一致性,后者犧牲了可用性。

這個(gè)例子雖然簡(jiǎn)單,但是說(shuō)明的內(nèi)容卻很重要。在分布式系統(tǒng)當(dāng)中,CAP三個(gè)特性我們是無(wú)法同時(shí)滿足的,必然要舍棄一個(gè)。三者舍棄一個(gè),顯然排列組合一共有三種可能。

1. 舍棄A,保留CP

一個(gè)系統(tǒng)保證了一致性和分區(qū)容錯(cuò)性,舍棄可用性。也就是說(shuō)在極端情況下,允許出現(xiàn)系統(tǒng)無(wú)法訪問(wèn)的情況出現(xiàn),這個(gè)時(shí)候往往會(huì)犧牲用戶體驗(yàn),讓用戶保持等待,一直到系統(tǒng)數(shù)據(jù)一致了之后,再恢復(fù)服務(wù)。

對(duì)于有些系統(tǒng)而言,一致性是安身立命之本,比如Hbase、Redis這種分布式存儲(chǔ),數(shù)據(jù)一致性是最基本的要求。不滿足一致性的存儲(chǔ)顯然不會(huì)有用戶愿意使用。

ZooKeeper也是一樣,任何時(shí)候訪問(wèn)ZK都可以獲得一致性的結(jié)果。它的職責(zé)就是保證管轄下的服務(wù)保持同步和一致,顯然不可能放棄一致性。但是在極端情況下,ZK可能會(huì)丟棄調(diào)一些請(qǐng)求,消費(fèi)者需要重新請(qǐng)求才能獲得結(jié)果。

2. 舍棄C,保留AP

這種是大部分的分布式系統(tǒng)的設(shè)計(jì),保證高可用和分區(qū)容錯(cuò),但是會(huì)犧牲一致性。比如淘寶購(gòu)物以及12306購(gòu)票等等,前面說(shuō)過(guò)淘寶可以做到全年可用性5個(gè)9的超高級(jí)別,但是此時(shí)就無(wú)法保證數(shù)據(jù)一致性了。

舉個(gè)例子,我們?cè)?2306買票的時(shí)候就經(jīng)常會(huì)遇到。在我們點(diǎn)擊購(gòu)買的時(shí)候,系統(tǒng)并沒(méi)有提示沒(méi)票。等我們輸入了驗(yàn)證碼,付款的時(shí)候才會(huì)告知,已經(jīng)沒(méi)有票了。這就是因?yàn)槲覀冊(cè)邳c(diǎn)擊購(gòu)買的時(shí)候,數(shù)據(jù)沒(méi)有達(dá)成一致性,在付款校驗(yàn)的時(shí)候才檢驗(yàn)出余票不足。這種設(shè)計(jì)會(huì)犧牲一些用戶體驗(yàn),但是可以保證高可用,讓用戶不至于無(wú)法訪問(wèn)或者是長(zhǎng)時(shí)間等待,也算是一種取舍吧。

3. 舍棄P,保留CA

很遺憾,這種情況幾乎不存在。因?yàn)榉植际较到y(tǒng),網(wǎng)絡(luò)分區(qū)是必然的。如果要舍棄P,那么就是要舍棄分布式系統(tǒng),CAP也就無(wú)從談起了??梢哉f(shuō)P是分布式系統(tǒng)的前提,所以這種情況是不存在的。

比如一般的關(guān)系型數(shù)據(jù)庫(kù),像是MySQL或者是Oracle,它們都保證了一致性和可用性,但是并不是分布式系統(tǒng)。從這點(diǎn)上來(lái)說(shuō)CAP并不是等價(jià)的,我們并不能通過(guò)犧牲CA來(lái)提升P。要想提升分區(qū)容錯(cuò)性,只能通過(guò)提升基礎(chǔ)設(shè)施的穩(wěn)定性來(lái)達(dá)到。也就是說(shuō)這并不是一個(gè)軟件問(wèn)題。

到這里CAP的理論就介紹完了,到最后會(huì)發(fā)現(xiàn)這其實(shí)是一個(gè)取舍問(wèn)題,并沒(méi)有完美的方案。每個(gè)設(shè)計(jì)分布式系統(tǒng)的架構(gòu)師,需要根據(jù)自身業(yè)務(wù)場(chǎng)景的實(shí)際特性來(lái)考量。比如,像是涉及到金錢的問(wèn)題,一致性是必須的,極端情況下,哪怕用戶暫時(shí)無(wú)法訪問(wèn), 也不能使得相關(guān)的數(shù)據(jù)不準(zhǔn)確。這不僅會(huì)影響一個(gè)公司的聲譽(yù),也會(huì)帶來(lái)許多其他方面的困擾。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9793

    瀏覽量

    87945
  • 分布式系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    19630
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    分布式光伏總出問(wèn)題?安科瑞分布式光伏監(jiān)控系統(tǒng)來(lái)“救場(chǎng)”

    、分布式光伏的痛點(diǎn)大揭秘 在 “雙碳” 目標(biāo)的大力推動(dòng)下,分布式光伏作為綠色能源領(lǐng)域的重要力量,正以前所未有的速度蓬勃發(fā)展,越來(lái)越多的企業(yè)和家庭選擇安裝分布式光伏
    的頭像 發(fā)表于 07-16 16:50 ?81次閱讀
    <b class='flag-5'>分布式</b>光伏總出問(wèn)題?安科瑞<b class='flag-5'>分布式</b>光伏監(jiān)控<b class='flag-5'>系統(tǒng)</b>來(lái)“救場(chǎng)”

    Ceph分布式存儲(chǔ)系統(tǒng)解析

    在當(dāng)今數(shù)據(jù)爆炸的時(shí)代,企業(yè)對(duì)存儲(chǔ)系統(tǒng)的需求日益增長(zhǎng),傳統(tǒng)的集中式存儲(chǔ)已經(jīng)無(wú)法滿足大規(guī)模數(shù)據(jù)處理的要求。分布式存儲(chǔ)系統(tǒng)應(yīng)運(yùn)而生,而Ceph作為開源分布式存儲(chǔ)
    的頭像 發(fā)表于 07-14 11:15 ?157次閱讀

    雙電機(jī)分布式驅(qū)動(dòng)汽車高速穩(wěn)定性機(jī)電耦合控制

    摘要:為了利用所設(shè)計(jì)的雙電機(jī)防滑差速驅(qū)動(dòng)系統(tǒng)來(lái)提高分布式驅(qū)動(dòng)汽車的動(dòng)力學(xué)性能,在前期同軸耦合驅(qū)動(dòng)控制理論研究的基礎(chǔ)上,開展該車的高速穩(wěn)定性機(jī)電耦合控制研究。建立并驗(yàn)證包含所設(shè)計(jì)驅(qū)動(dòng)系統(tǒng)
    發(fā)表于 06-18 16:37

    多通道電源管理芯片在分布式能源系統(tǒng)中的優(yōu)化策略

    理、可靠性設(shè)計(jì)以及系統(tǒng)集成為主軸展開分析,為分布式能源系統(tǒng)效能提升提供堅(jiān)實(shí)理論基石與創(chuàng)新實(shí)踐路徑。 關(guān)鍵詞: 多通道電源管理芯片;分布式能源
    的頭像 發(fā)表于 05-16 15:22 ?221次閱讀

    ZXDoc》之汽車服務(wù)導(dǎo)向SOME/IP

    ZXDoc支持SOME/IP功能,通過(guò)服務(wù)導(dǎo)向架構(gòu)實(shí)現(xiàn)跨域通信標(biāo)準(zhǔn)化,降低系統(tǒng)耦合,支持動(dòng)態(tài)服務(wù)發(fā)現(xiàn)與調(diào)用,提升分布式系統(tǒng)擴(kuò)展性和維護(hù)效率。什么是SOME/IP?SOME/IP
    的頭像 發(fā)表于 04-30 18:23 ?835次閱讀
    《<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>ZXDoc》之汽車服務(wù)導(dǎo)向SOME/IP

    分布式光伏發(fā)運(yùn)維系統(tǒng)實(shí)際應(yīng)用案例分享

    安科瑞劉鴻鵬 摘?要 分布式光伏發(fā)電系統(tǒng)其核心特點(diǎn)是發(fā)電設(shè)備靠近用電負(fù)荷中心,通常安裝在屋頂、建筑立面或閑置空地上,截至2025年,分布式光伏發(fā)電系統(tǒng)在全球和中國(guó)范圍內(nèi)取得了顯著發(fā)展,
    的頭像 發(fā)表于 04-09 14:46 ?354次閱讀
    <b class='flag-5'>分布式</b>光伏發(fā)運(yùn)維<b class='flag-5'>系統(tǒng)</b>實(shí)際應(yīng)用案例分享

    淺談分布式光伏系統(tǒng)在工業(yè)企業(yè)的設(shè)計(jì)及應(yīng)用

    主要對(duì)工業(yè)廠區(qū)屋頂分布式光伏發(fā)電系統(tǒng)的設(shè)計(jì)及應(yīng)用進(jìn)行研究,為工業(yè)廠區(qū)能源供應(yīng)提供種全新的解決思路和技術(shù)支持。介紹了工業(yè)廠區(qū)屋頂分布式光伏系統(tǒng)
    的頭像 發(fā)表于 03-21 14:24 ?429次閱讀
    淺談<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統(tǒng)</b>在工業(yè)企業(yè)的設(shè)計(jì)及應(yīng)用

    分布式云化數(shù)據(jù)庫(kù)有哪些類型

    分布式云化數(shù)據(jù)庫(kù)有哪些類型?分布式云化數(shù)據(jù)庫(kù)主要類型包括:關(guān)系型分布式數(shù)據(jù)庫(kù)、非關(guān)系型分布式數(shù)據(jù)庫(kù)、新SQL分布式數(shù)據(jù)庫(kù)、以列方式存儲(chǔ)數(shù)據(jù)、
    的頭像 發(fā)表于 01-15 09:43 ?479次閱讀

    基于ptp的分布式系統(tǒng)設(shè)計(jì)

    在現(xiàn)代分布式系統(tǒng)中,精確的時(shí)間同步對(duì)于確保數(shù)據(jù)致性、系統(tǒng)穩(wěn)定性和性能至關(guān)重要。PTP(Precision Time Protocol)是
    的頭像 發(fā)表于 12-29 10:09 ?564次閱讀

    HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對(duì)象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)

    提供了async版本供該場(chǎng)景使用。 當(dāng)前,wantParams中“sessionId”字段在遷移流程中被系統(tǒng)占用,建議開發(fā)者在wantParams中定義其他key值存儲(chǔ)該分布式數(shù)據(jù)對(duì)象生成的id,避免
    發(fā)表于 12-24 09:40

    安科瑞Acrel-1000DP分布式光伏監(jiān)控系統(tǒng)在8.3MWp分布式光伏發(fā)電中的應(yīng)用

    安科瑞分布式光伏監(jiān)控系統(tǒng)在上海汽車變速器有限公司 8.3MWp分布式光伏發(fā)電項(xiàng)目中的應(yīng)用
    發(fā)表于 12-16 15:03 ?0次下載

    分布式光伏監(jiān)控系統(tǒng)在能源領(lǐng)域中的重要性

    在當(dāng)今能源領(lǐng)域,分布式光伏發(fā)電作為種可持續(xù)的能源解決方案正日益普及。而分布式光伏監(jiān)控系統(tǒng)在其中扮演著至關(guān)重要的角色,為分布式光伏發(fā)電的高效
    的頭像 發(fā)表于 12-09 14:39 ?740次閱讀
    <b class='flag-5'>分布式</b>光伏監(jiān)控<b class='flag-5'>系統(tǒng)</b>在能源領(lǐng)域中的重要性

    分布式光纖測(cè)溫是什么?應(yīng)用領(lǐng)域是?

    分布式光纖測(cè)溫是種先進(jìn)的溫度測(cè)量技術(shù),它利用光纖的拉曼散射原理進(jìn)行溫度監(jiān)測(cè)。以下是對(duì)分布式光纖測(cè)溫的詳細(xì)介紹: 、基本原理 分布式光纖測(cè)
    的頭像 發(fā)表于 10-24 15:30 ?1250次閱讀
    <b class='flag-5'>分布式</b>光纖測(cè)溫是什么?應(yīng)用領(lǐng)域是?

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產(chǎn)品的部署方式,是相對(duì)于集中式而言的。 、部署方式 分散安裝:分布式輸電線路故障定位系統(tǒng)中的采集裝置需要安裝在輸電線路的多個(gè)位置,通常是每隔
    的頭像 發(fā)表于 10-16 11:39 ?687次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    CAP 定理:理論、實(shí)踐

    個(gè)分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,不可能同時(shí)滿足以下三個(gè)特性: 致性:所有節(jié)點(diǎn)在同時(shí)間具有相同的數(shù)據(jù)視圖。 可用性:每個(gè)請(qǐng)求都能在合理的時(shí)間內(nèi)
    的頭像 發(fā)表于 08-19 11:27 ?657次閱讀