CAP到底是什么鬼?
CAP理論
在分布式系統(tǒng)中 CAP不能三點(diǎn)同時(shí)滿足
Consistence:在分布式環(huán)境中,【一致性】指的是多個(gè)副本之間是否能夠保持一致的特性。在一致性的需求下,當(dāng)一個(gè)系統(tǒng)再數(shù)據(jù)一致的狀態(tài)下執(zhí)行
更新操作后,應(yīng)該保證系統(tǒng)數(shù)據(jù)仍然處于一致的狀態(tài)
Availability:【可用性】是指系統(tǒng)提供的服務(wù)必須一直處于可用的狀態(tài),對(duì)于用戶的每一個(gè)操作請(qǐng)求總是能夠在有限的時(shí)間內(nèi)返回結(jié)果、
Partition tolerance:【分區(qū)容錯(cuò)性】分布式系統(tǒng)再遇到任何網(wǎng)絡(luò)分區(qū)故障的時(shí)候,仍然需要能夠保證對(duì)外提供滿足一致性和可用性的服務(wù),除非是整個(gè)網(wǎng)絡(luò)環(huán)境都發(fā)生故障了。
解釋CAP原理
只能滿足CA不能滿足P的理解
異地DB,保證C需要雙寫,如果雙寫? DB_0同步到DB_1的過程網(wǎng)絡(luò)有問題,則一直掛起,A不滿足。單臺(tái)DB滿足CA 但是不滿足P
只能滿足AP不能滿足C的理解
異地DB,master寫成功(異步復(fù)制到slve) 滿足AP 不滿足C
只能滿足CP不能滿足A的理解
異地DB,保證CP,必須同步雙寫, DB_0同步到DB_1的過程網(wǎng)絡(luò)有問題,則一直掛起,A不滿足
------------------------------------------------------------------------------------------------------------
當(dāng)然在目前海量數(shù)據(jù)面前,往往會(huì)舍棄C,而保證AP,對(duì)與數(shù)據(jù)的一致性,只要求最終一致即可,在過程中是會(huì)出現(xiàn)差異的狀況,比如在不同
地方的人對(duì)某個(gè)新聞或者商品進(jìn)行評(píng)論,在一定時(shí)刻內(nèi)是不需要實(shí)時(shí)顯示出來的,只要保證最終會(huì)出現(xiàn)即可。
加深理解

應(yīng)用分區(qū)讀取同一個(gè)數(shù)據(jù)庫(kù)實(shí)例.png
如何理解這種分布式應(yīng)用部署架構(gòu) ?
1、db異步寫備庫(kù) AP的設(shè)計(jì)
異步復(fù)制 其實(shí)這一點(diǎn)是犧牲了C的。
2、db同步寫備庫(kù) CP的設(shè)計(jì)
同步寫 如果是同步寫的話,如果IDC機(jī)房掛掉,我們是敢直接吧流量全部切到IDC2的,備庫(kù)升級(jí)為主庫(kù)
螞蟻金服OceanBase 據(jù)說已經(jīng)打破CAP??
螞蟻金服的OceanBase據(jù)我目前的學(xué)習(xí)了解(20181128,據(jù)說打破了CAP原理的設(shè)計(jì)) oceanbase是基于多副本存儲(chǔ)的一個(gè)
分布式數(shù)據(jù)庫(kù),其實(shí)部署要求最近的兩個(gè)機(jī)房專線網(wǎng)絡(luò)延遲低于10ms【其實(shí)就是CP的設(shè)計(jì),網(wǎng)絡(luò)基礎(chǔ)設(shè)施的支持減少了網(wǎng)絡(luò)分區(qū)
出錯(cuò)的概率,A也變得相對(duì)可靠】