CAP原理简单理解
C:集群中所有機(jī)器狀態(tài)是一致的。
A:客戶端訪問(wèn)集群中任意一個(gè)節(jié)點(diǎn),總能得到"處理成功"的結(jié)果。
假設(shè)有五個(gè)節(jié)點(diǎn):n1~n5 ,出現(xiàn)網(wǎng)絡(luò)分區(qū)被分成兩組:[n1~n2]和[n3~n5],那么當(dāng)n1出來(lái)客戶端請(qǐng)求時(shí)(為了處理這種情況,也就是說(shuō)"容忍網(wǎng)絡(luò)分區(qū)",即支持 P):
1:如果要保證C(一致性),那么它需要把消息復(fù)制到所有節(jié)點(diǎn),但是網(wǎng)絡(luò)分區(qū)導(dǎo)致無(wú)法成功復(fù)制到n3~n5,所以它只能返回"處理失敗"的結(jié)果給客戶端。(這時(shí)系統(tǒng)就處于不可用狀態(tài),即喪失了A)
2:如果要保證可用性A,那么n1就只能把消息復(fù)制到n2,而不用復(fù)制到n3~n5(或者無(wú)視復(fù)制失敗/超時(shí)),但n3同時(shí)也可能在處理客戶端請(qǐng)求(譬如對(duì)同一個(gè)值進(jìn)行修改),n3也為了保證A而做了同樣的處理。 那么 [n1~n2]和[n3~n5]的狀態(tài)就不一致了,于是就喪失了 C。
那么如果不支持P(也就是不容忍網(wǎng)絡(luò)分區(qū)),也就是說(shuō)(很樂(lè)觀的認(rèn)為)假設(shè)系統(tǒng)不會(huì)出現(xiàn)網(wǎng)絡(luò)分區(qū)。總結(jié)