溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

分布式系統(tǒng)CAP定理中的P原理是什么

發(fā)布時間:2023-02-07 09:18:15 來源:億速云 閱讀:130 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“分布式系統(tǒng)CAP定理中的P原理是什么”,在日常操作中,相信很多人在分布式系統(tǒng)CAP定理中的P原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”分布式系統(tǒng)CAP定理中的P原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

什么是 CAP 定理(CAP theorem)

在理論計算機科學(xué)中,CAP 定理(CAP theorem),又被稱作布魯爾定理(Brewer's theorem),它指出對于一個分布式計算系統(tǒng)來說,不可能同時滿足以下三點:

  • 一致性(Consistency) (等同于所有節(jié)點訪問同一份最新的數(shù)據(jù)副本)

  • 可用性(Availability)(每次請求都能獲取到非錯的響應(yīng)——但是不保證獲取的數(shù)據(jù)為最新數(shù)據(jù))

  • 分區(qū)容錯性(Partition tolerance)(以實際效果而言,分區(qū)相當于對通信的時限要求。系統(tǒng)如果不能在時限內(nèi)達成數(shù)據(jù)一致性,就意味著發(fā)生了分區(qū)的情況,必須就當前操作在 C 和 A 之間做出選擇。)

分區(qū)容錯性(Partition tolerance)

理解 CAP 理論的最簡單方式是想象兩個節(jié)點分處分區(qū)兩側(cè)。允許至少一個節(jié)點更新狀態(tài)會導(dǎo)致數(shù)據(jù)不一致,即喪失了 C 性質(zhì)。如果為了保證數(shù)據(jù)一致性,將分區(qū)一側(cè)的節(jié)點設(shè)置為不可用,那么又喪失了 A 性質(zhì)。除非兩個節(jié)點可以互相通信,才能既保證 C 又保證 A,這又會導(dǎo)致喪失 P 性質(zhì)。

  • P 指的是分區(qū)容錯性,分區(qū)現(xiàn)象產(chǎn)生后需要容錯,容錯是指在 A 與 C 之間選擇。如果分布式系統(tǒng)沒有分區(qū)現(xiàn)象(沒有出現(xiàn)不一致不可用情況) 本身就沒有分區(qū) ,既然沒有分區(qū)則就更沒有分區(qū)容錯性 P。

  • 無論我設(shè)計的系統(tǒng)是 AP 還是 CP 系統(tǒng)如果沒有出現(xiàn)不一致不可用。 則該系統(tǒng)就處于 CA 狀態(tài)

  • P 的體現(xiàn)前提是得有分區(qū)情況存在

文章來源:維基百科 CAP 定理

幾個常用的 CAP 框架對比

框架所屬
EurekaAP
ZookeeperCP
ConsulCP

Eureka

Eureka 保證了可用性,實現(xiàn)最終一致性。

Eureka 所有節(jié)點都是平等的所有數(shù)據(jù)都是相同的,且 Eureka 可以相互交叉注冊。 Eureka client 使用內(nèi)置輪詢負載均衡器去注冊,有一個檢測間隔時間,如果在一定時間內(nèi)沒有收到心跳,才會移除該節(jié)點注冊信息;如果客戶端發(fā)現(xiàn)當前 Eureka 不可用,會切換到其他的節(jié)點,如果所有的 Eureka 都跪了,Eureka client 會使用最后一次數(shù)據(jù)作為本地緩存;所以以上的每種設(shè)計都是他不具備一致性的特性。

注意:因為 EurekaAP 的特性和請求間隔同步機制,在服務(wù)更新時候一般會手動通過 Eureka 的 api 把當前服務(wù)狀態(tài)設(shè)置為offline,并等待 2 個同步間隔后重新啟動,這樣就能保證服務(wù)更新節(jié)點對整體系統(tǒng)的影響

Zookeeper

強一致性

Zookeeper 在選舉 leader 時會停止服務(wù),只有成功選舉 leader 成功后才能提供服務(wù),選舉時間較長;內(nèi)部使用 paxos 選舉投票機制,只有獲取半數(shù)以上的投票才能成為 leader,否則重新投票,所以部署的時候最好集群節(jié)點不小于 3 的奇數(shù)個(但是誰能保證跪掉后節(jié)點也是奇數(shù)個呢);Zookeeper 健康檢查一般是使用 tcp 長鏈接,在內(nèi)部網(wǎng)絡(luò)抖動時或者對應(yīng)節(jié)點阻塞時候都會變成不可用,這里還是比較危險的;

Consul

和 Zookeeper 一樣數(shù)據(jù) CP

Consul 注冊時候只有過半的節(jié)點都寫入成功才認為注冊成功;leader 掛掉時,重新選舉期間整個 Consul 不可用,保證了強一致性但犧牲了可用性 有很多 blog 說 Consul 屬于 ap,官方已經(jīng)確認他為 CP 機制。

到此,關(guān)于“分布式系統(tǒng)CAP定理中的P原理是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

cap
AI