CAP理論是分布式系統(tǒng)中一個(gè)著名的理論,表示分布式系統(tǒng)需要遵循的下面三個(gè)特性:
C():一致性,外部系統(tǒng)訪問(wèn)系統(tǒng)每一個(gè)節(jié)點(diǎn),得到的數(shù)據(jù)都是一樣的。
A():可用性,分布式系統(tǒng)能正常對(duì)外提供服務(wù),不能有某種情況導(dǎo)致系統(tǒng)不可用。
P():分區(qū)容錯(cuò)性,分布式系統(tǒng)一般有多個(gè)節(jié)點(diǎn),多個(gè)節(jié)點(diǎn)之間通過(guò)網(wǎng)絡(luò)通信,當(dāng)網(wǎng)絡(luò)出現(xiàn)故障,節(jié)點(diǎn)直接不能通信,便出現(xiàn)了分區(qū),分區(qū)容錯(cuò)性是指,當(dāng)出現(xiàn)分區(qū)時(shí),系統(tǒng)還能對(duì)外提供服務(wù)。
分布式系統(tǒng),由于有多個(gè)節(jié)點(diǎn),一般是要滿足P這個(gè)特性的,當(dāng)多個(gè)節(jié)點(diǎn)之間需要同步數(shù)據(jù),同步數(shù)據(jù)需要一定的時(shí)間,這段時(shí)間內(nèi),如果對(duì)外服務(wù),就會(huì)導(dǎo)致有的節(jié)點(diǎn)的數(shù)據(jù)不一致,不滿足C(一致性),如果不對(duì)外服務(wù),就不滿足A(可用性),不能保證同時(shí)滿足上面三個(gè)特性,只能同時(shí)滿足兩個(gè)特性。
CP:保證一致性和分區(qū)容錯(cuò)性,舍棄掉可用性,這種系統(tǒng)對(duì)數(shù)據(jù)的一致性要求很高,當(dāng)節(jié)點(diǎn)出現(xiàn)故障或數(shù)據(jù)不一致時(shí),一定要等到系統(tǒng)各個(gè)節(jié)點(diǎn)完全同步數(shù)據(jù)后才對(duì)外服務(wù),這種系統(tǒng)一般有redis、zoopkeeper,對(duì)于數(shù)據(jù)庫(kù)和分布式協(xié)調(diào)服務(wù),一致性當(dāng)然要求高,如果某次同步數(shù)據(jù)的時(shí)間比較長(zhǎng),就會(huì)導(dǎo)致在比較長(zhǎng)的一段時(shí)間內(nèi)系統(tǒng)不可用,犧牲了用戶體驗(yàn)。
AP:保證可用性和分區(qū)容錯(cuò)性,舍棄掉一致性,這種系統(tǒng)對(duì)可用性要求很高,要求系統(tǒng)能隨時(shí)對(duì)外提供服務(wù),即使在節(jié)點(diǎn)發(fā)生故障或數(shù)據(jù)不一致時(shí),系統(tǒng)仍然對(duì)外提供服務(wù),這樣的系統(tǒng)一般有euraka,euraka是注冊(cè)中心,對(duì)外提供注冊(cè)服務(wù),可用性非常重要,即使某些時(shí)候數(shù)據(jù)不一致,也可以在后面將數(shù)據(jù)同步完整,大多數(shù)分布式系統(tǒng)也是滿足AP,因?yàn)榇蠖鄶?shù)系統(tǒng)沒(méi)有那么多重要的數(shù)據(jù)需要同步,最重要的是滿足可用性。