欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分布式系統(tǒng)CAP定理中的P原理解析

 更新時(shí)間:2023年02月05日 11:32:01   作者:啵啵腸  
這篇文章主要為大家介紹了分布式系統(tǒng)CAP定理中的P原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

之前在看 CAP 定理時(shí)抱有很大的疑惑,CAP 定理的定義是指在分布式系統(tǒng)中三者只能滿足其二,也就是存在分布式 CA 系統(tǒng)的。

在網(wǎng)絡(luò)上查閱了很多關(guān)于 CAP 文章,雖然這些文章對(duì)于 P 的解釋五花八門,但總結(jié)下來這些觀點(diǎn)大多都是指 P 是不可缺少的,也就是說在分布式系統(tǒng)只能是 AP 或者 CP,這種理論與我之前所認(rèn)識(shí)的理論(存在分布式 CA 系統(tǒng))是沖突的,所以才有了疑惑。

這個(gè)定理起源于加州大學(xué)柏克萊分校(University of California, Berkeley)的計(jì)算機(jī)科學(xué)家埃里克·布魯爾在 2000 年的分布式計(jì)算原理研討會(huì)(PODC)上提出的一個(gè)猜想。 在 2002 年,麻省理工學(xué)院(MIT)的賽斯·吉爾伯特和南希·林奇發(fā)表了布魯爾猜想的證明,使之成為一個(gè)定理。

什么是 CAP 定理(CAP theorem)

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

  • 一致性(Consistency) (等同于所有節(jié)點(diǎn)訪問同一份最新的數(shù)據(jù)副本)
  • 可用性(Availability)(每次請(qǐng)求都能獲取到非錯(cuò)的響應(yīng)——但是不保證獲取的數(shù)據(jù)為最新數(shù)據(jù))
  • 分區(qū)容錯(cuò)性(Partition tolerance)(以實(shí)際效果而言,分區(qū)相當(dāng)于對(duì)通信的時(shí)限要求。系統(tǒng)如果不能在時(shí)限內(nèi)達(dá)成數(shù)據(jù)一致性,就意味著發(fā)生了分區(qū)的情況,必須就當(dāng)前操作在 C 和 A 之間做出選擇。)

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

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

  • P 指的是分區(qū)容錯(cuò)性,分區(qū)現(xiàn)象產(chǎn)生后需要容錯(cuò),容錯(cuò)是指在 A 與 C 之間選擇。如果分布式系統(tǒng)沒有分區(qū)現(xiàn)象(沒有出現(xiàn)不一致不可用情況) 本身就沒有分區(qū) ,既然沒有分區(qū)則就更沒有分區(qū)容錯(cuò)性 P。
  • 無論我設(shè)計(jì)的系統(tǒng)是 AP 還是 CP 系統(tǒng)如果沒有出現(xiàn)不一致不可用。 則該系統(tǒng)就處于 CA 狀態(tài)
  • P 的體現(xiàn)前提是得有分區(qū)情況存在

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

幾個(gè)常用的 CAP 框架對(duì)比

框架所屬
EurekaAP
ZookeeperCP
ConsulCP

Eureka

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

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

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

Zookeeper

強(qiáng)一致性

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

Consul

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

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

以上就是分布式系統(tǒng)CAP定理中的P原理解析的詳細(xì)內(nèi)容,更多關(guān)于分布式系統(tǒng)CAP的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • git?pull和git?clone的區(qū)別詳解

    git?pull和git?clone的區(qū)別詳解

    本文主要介紹了git?pull和git?clone的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 解決idea打開窗口/tab過多導(dǎo)致隱藏的問題

    解決idea打開窗口/tab過多導(dǎo)致隱藏的問題

    這篇文章主要介紹了解決idea打開窗口/tab過多導(dǎo)致隱藏的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 真?zhèn)戊o態(tài)區(qū)別方法分析

    真?zhèn)戊o態(tài)區(qū)別方法分析

    有些用戶覺得,偽靜態(tài)和真靜態(tài)實(shí)際被收錄量會(huì)相差非常大,其實(shí)不然,從你個(gè)人角度,你去判斷一下一個(gè)帖子到底是真靜態(tài)還是偽靜態(tài)?
    2010-01-01
  • 調(diào)用無文檔說明的?Web?API過程描述

    調(diào)用無文檔說明的?Web?API過程描述

    這篇文章主要為大家介紹了調(diào)用無文檔說明的Web?API過程描述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-03-03
  • 簡(jiǎn)單談?wù)凣it中的回滾操作

    簡(jiǎn)單談?wù)凣it中的回滾操作

    大家在日常開發(fā)中,經(jīng)常會(huì)遇到需要將代碼切回到之前的某個(gè)版本的情況,有可能是需要將代碼回滾,也有可能需要查看之前的某個(gè)實(shí)現(xiàn)。遇到這樣的情況,該怎么做呢?下面通過這篇文章來學(xué)習(xí)下Git中的回滾操作,有需要的可以參考借鑒。
    2016-09-09
  • 如何在網(wǎng)頁中顯示服務(wù)器時(shí)間

    如何在網(wǎng)頁中顯示服務(wù)器時(shí)間

    在網(wǎng)頁上顯示時(shí)間,如果取的是用戶本機(jī)的時(shí)間,由于用戶的時(shí)間往往不準(zhǔn)確,所以顯示的有問題。而服務(wù)器時(shí)間一般不會(huì)誤差太大,所以最好顯示服務(wù)器時(shí)間
    2013-03-03
  • Wireshark TS FTP 傳輸失敗問題解決

    Wireshark TS FTP 傳輸失敗問題解決

    這篇文章主要為大家介紹了Wireshark TS FTP 傳輸失敗問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式

    使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式

    這篇文章主要介紹了使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)

    Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)

    這篇文章主要介紹了Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 超全整理visual?studio快捷鍵使用技巧

    超全整理visual?studio快捷鍵使用技巧

    這篇文章主要為大家介紹了整理超全的visual?studio快捷鍵使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02

最新評(píng)論